Dateien Öffnen nur mit Bestimmten Timestamp

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ArashiTok
User
Beiträge: 11
Registriert: Montag 19. Juni 2017, 14:06

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 :mrgreen:

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 ^^
BlackJack

@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.
ArashiTok
User
Beiträge: 11
Registriert: Montag 19. Juni 2017, 14:06

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
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

So kompliziert ist das nicht, schau mal:

(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.
ArashiTok
User
Beiträge: 11
Registriert: Montag 19. Juni 2017, 14:06

Cool werd ich dann gleich mal testen ^^ wenn ich wieder daheim bin ;)
ArashiTok
User
Beiträge: 11
Registriert: Montag 19. Juni 2017, 14:06

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 :lol: .

Aber zumindest hab ich jetzt einen ansatz mit dem ich arbeiten kann.

Also nochmals Vielen Dank für eure Antworten :mrgreen:
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

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 :lol: .

Aber zumindest hab ich jetzt einen ansatz mit dem ich arbeiten kann.

Also nochmals Vielen Dank für eure Antworten :mrgreen:
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.

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.
ArashiTok
User
Beiträge: 11
Registriert: Montag 19. Juni 2017, 14:06

jop die ausgabe ansich wird nicht gebraucht aber der übersichtshalber zum testen ^^ gehts, zum testen hab ich dann den parameter %c genommen ^^
und ja das ganze wird unter windows ausgeführt :mrgreen:
Antworten