Hi, ich werd nach längeren suchen auch mal ne Frage los ^^ eigentlich lese ich hier meist nur die beiträge und bekomm dadurch schon meine antworten bin noch nicht besonders gut im umgang mit python hab aber auch mal ne Frage
Ich möchte einige dateien öffnen und einlesen nunja so gesehn kein ding bekomm ich hin ^^ nun meine Frage ist wie kann ich nur bestimmte dateien öffnen und zwar nach entsprechenden änderungsdatum bsp durch den abruf von fromtimestamp() möchte jetzt zum bsp wenn ich jetzt dateien öffenen möchte die die Letzten 8h oder 24h angelegt wurden öffnen einer ne idee wie das geht`?
:K
wenn da mir einer Tips geben könnte wäre Cool ^^
Dateien Öffnen nur mit Bestimmten Timestamp
@ArashiTok: Die Dateizeit in ein `datetime.datetime`-Objekt umwandeln und mit denen kann man dann rechnen. Zum Beispiel die Differenz, oder man kann ein `datetime.timedelta`-Objekt abziehen. Und man kann diese Objekte auch auf kleiner oder grösser vergleichen.
mhm gut, timedelta kenn ich noch um die gleiche Uhrzeit und Datum von gestern anzuzeigen
gestern = datetime.now() - timedelta(days=1)
gehe dann davon aus das ich das dann per For bzw If vergleichs schleife herrausfiltern muss um es dann weiter zu verarbeiten.
Muss ich mal probieren
gestern = datetime.now() - timedelta(days=1)
gehe dann davon aus das ich das dann per For bzw If vergleichs schleife herrausfiltern muss um es dann weiter zu verarbeiten.
Muss ich mal probieren
So kompliziert ist das nicht, schau mal:
(Python 3, Linux)
(Python 3, Linux)
Code: Alles auswählen
In [1]: import os.path
In [2]: import glob
In [3]: from datetime import datetime
In [4]: now = datetime.now()
In [5]: for file in glob.glob('/var/log/sa/*'):
...: last_modified = datetime.fromtimestamp(os.path.getmtime(file))
...: delta_t = now - last_modified
...: if delta_t.days < 14:
...: print(file, last_modified.strftime('%F'))
/var/log/sa/sa21 2017-06-21
/var/log/sa/sa17 2017-06-17
/var/log/sa/sa14 2017-06-14
/var/log/sa/sa22 2017-06-22
/var/log/sa/sa19 2017-06-19
/var/log/sa/sa24 2017-06-24
/var/log/sa/sa18 2017-06-18
/var/log/sa/sa13 2017-06-13
/var/log/sa/sa15 2017-06-15
/var/log/sa/sa27 2017-06-27
/var/log/sa/sa16 2017-06-16
/var/log/sa/sa25 2017-06-25
/var/log/sa/sa20 2017-06-20
/var/log/sa/sa23 2017-06-23
/var/log/sa/sa26 2017-06-26
Zuletzt geändert von nezzcarth am Dienstag 27. Juni 2017, 18:27, insgesamt 2-mal geändert.
Also ich hab das ganze mal getestet, danke für die schnellen Antworten der Code Snipe hat mir sehr geholfen auch wenn der strftime parameter %F bei mir nich ging nach dem klein schreiben %f hat er bei mir auch seine wirkung gezeigt, mann muss sagen für sowas gibts dann ja die Reference .
Aber zumindest hab ich jetzt einen ansatz mit dem ich arbeiten kann.
Also nochmals Vielen Dank für eure Antworten
Aber zumindest hab ich jetzt einen ansatz mit dem ich arbeiten kann.
Also nochmals Vielen Dank für eure Antworten
Also an sich ist die Ausgabe des Datums egal, da es ja nur darum ging, dass zu Demonstrationszwecken in der Schleife irgendwas einfaches passiert. Für deine konkrete Anwendung brauchst du das vermutlich (so) nicht.ArashiTok hat geschrieben:Also ich hab das ganze mal getestet, danke für die schnellen Antworten der Code Snipe hat mir sehr geholfen auch wenn der strftime parameter %F bei mir nich ging nach dem klein schreiben %f hat er bei mir auch seine wirkung gezeigt, mann muss sagen für sowas gibts dann ja die Reference .
Aber zumindest hab ich jetzt einen ansatz mit dem ich arbeiten kann.
Also nochmals Vielen Dank für eure Antworten
Aber der Vollständigkeit halber:
Stimmt, das "%F" hätte ich nicht verwenden sollen. Das ist ein undokumentiertes Kürzel, das z.B. unter Linux oder FreeBSD funktioniert, aber evtl. nicht unter Windows, weil strftime intern auf die C-Standard-Bibliothek zurückgreift und die Version unter Windows (manchmal?) einen älteren Standard implementiert, der "%F" nicht kennt. Die korrekte Ersetzung wäre allerdings "%Y-%M-%d", denn "%f" ist für etwas anderes.