Hi,
ich verstehe das Zeitstempelformat nicht, das os.stat liefert. Für die Datei mit dem Datum 07-05-2006 06:53 liefert os.stat[8] '1146977625'. Mache ich mit os.utime(path,(0,1146977625))
den Umkehrtest, dann ist das auch tatsächlich das Dateidatum. Nur kann ich keinen Zusammenhang zwischen der Zahlenreihe "1146977625" und dem Zeitstempel '07-05-2006 06:53' erkennen ?
Gruss, Seven
Ausgabeformat von os.stat ?
-
- User
- Beiträge: 408
- Registriert: Freitag 7. Oktober 2005, 14:37
- Wohnort: Berlin
- Kontaktdaten:
Das sind die Sekunden, die seit dem 1.1.1970 vergangen sind!
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Seven!snakeseven hat geschrieben:Nur kann ich keinen Zusammenhang zwischen der Zahlenreihe "1146977625" und dem Zeitstempel '07-05-2006 06:53' erkennen?
Du musst dir das Modul "time" ansehen. Dort sind die Funktionen zum Umwandeln von Zeitwerten drinnen.
Code: Alles auswählen
time.ctime(os.path.getctime(r"Pfad zur Datei"))
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
-
- User
- Beiträge: 408
- Registriert: Freitag 7. Oktober 2005, 14:37
- Wohnort: Berlin
- Kontaktdaten:
Tatsächlich. Gebe ich os.utime (path, (0,1)) ein, bekomme ich als Datum 01-1-1970 01:00. Ich will die Uhrzeit von Files ändern. Das wird ja ein munteres Sekundenzählenmurph hat geschrieben:Das sind die Sekunden, die seit dem 1.1.1970 vergangen sind!
Gruss, Seven
-
- User
- Beiträge: 408
- Registriert: Freitag 7. Oktober 2005, 14:37
- Wohnort: Berlin
- Kontaktdaten:
Das lese ich gerne und ist genau was ich suchtegerold hat geschrieben:Du musst dir das Modul "time" ansehen. Dort sind die Funktionen zum Umwandeln von Zeitwerten drinnen.
Code: Alles auswählen
time.ctime(os.path.getctime(r"Pfad zur Datei"))
Gruss, Seven
-
- User
- Beiträge: 408
- Registriert: Freitag 7. Oktober 2005, 14:37
- Wohnort: Berlin
- Kontaktdaten:
So lässt sich der Zeitstempel einer Datei manipulieren:
Gruss, Seven
Code: Alles auswählen
import os,time,calendar
fd = time.localtime(os.stat(pfad)[8])
# Uhrzeit im Zeitstempel der Datei in "pfad"
timestring = (fd[0],monat,tag,stunde-2,minute,fd[5],fd[6],fd[7],fd[8])
# 9-stelliger Tupel als Argument für calendar.timegm()
# monat,tag,stunde,minute = Integer
# stunde - 2 kompensiert 2 Stunden Differenz von localtime und gmtime
timestamp = calendar.timegm(timestring)
# wandelt Tupel in Sekunden-Gesamtzeit
os.utime(pfad,(0,timestamp))
# stetzt Zeitstempel der Datei neu
-
- User
- Beiträge: 408
- Registriert: Freitag 7. Oktober 2005, 14:37
- Wohnort: Berlin
- Kontaktdaten:
Hier war was, hat sich aber erledigt.
Seven
Seven
Das ist recht fehleranfällig. Was ist wenn die alte Dateizeit Nachts um 1 war? Vielleicht auch noch an einem 1.3. in einem Schaltjahr oder zu Neujahr. Ich würde zum rechnen mit Datumsangaben lieber die `datetime` Objekte benutzen.snakeseven hat geschrieben:Code: Alles auswählen
timestring = (fd[0],monat,tag,stunde-2,minute,fd[5],fd[6],fd[7],fd[8]) # 9-stelliger Tupel als Argument für calendar.timegm() # monat,tag,stunde,minute = Integer # stunde - 2 kompensiert 2 Stunden Differenz von localtime und gmtime
Code: Alles auswählen
import os
import time
from datetime import datetime, timedelta
delta = timedelta(hours=2)
file_time = datetime.fromtimestamp(os.path.getctime('test.py'))
new_timestamp = time.mktime((file_time - delta).timetuple())
os.utime('test.py', (new_timestamp, new_timestamp))
-
- User
- Beiträge: 408
- Registriert: Freitag 7. Oktober 2005, 14:37
- Wohnort: Berlin
- Kontaktdaten:
Siehste, das habe ich nicht bedacht . Werde gleich mal updaten.BlackJack hat geschrieben:Das ist recht fehleranfällig. Was ist wenn die alte Dateizeit Nachts um 1 war? Vielleicht auch noch an einem 1.3. in einem Schaltjahr oder zu Neujahr. Ich würde zum rechnen mit Datumsangaben lieber die `datetime` Objekte benutzen.
Thanx, Seven
-
- User
- Beiträge: 408
- Registriert: Freitag 7. Oktober 2005, 14:37
- Wohnort: Berlin
- Kontaktdaten:
Das habe ich versucht, aber wie bringe ich den Monat unter, timedelta kennt keinen Parameter month ?BlackJack hat geschrieben:Ich würde zum rechnen mit Datumsangaben lieber die `datetime` Objekte benutzen.
http://docs.python.org/lib/datetime-timedelta.html
Gruss,, Seven
der Fehler mit den -2 Stunden lässt sich natürlich leicht beheben, indem man die 2 Stunden erst nach dem umwandeln in Sekunden abzieht, also Minus 60x60x2 Sekunden....
Code: Alles auswählen
import os,time,calendar
fd = time.localtime(os.stat(pfad)[8])
# Uhrzeit im Zeitstempel der Datei in "pfad"
timestring = (fd[0],monat,tag,stunde,minute,fd[5],fd[6],fd[7],fd[8])
# 9-stelliger Tupel als Argument für calendar.timegm()
# monat,tag,stunde,minute = Integer
timestamp = calendar.timegm(timestring)
# wandelt Tupel in Sekunden-Gesamtzeit
timestamp -= 60*60*2
# stunde - 2 kompensiert 2 Stunden Differenz von localtime und gmtime
os.utime(pfad,(0,timestamp))
# stetzt Zeitstempel der Datei neu
Natürlich nicht. Was ist denn ein Monat? Oder anders gefragt 31.12. minus ein Monat -- welcher Tag soll das sein?snakeseven hat geschrieben:Das habe ich versucht, aber wie bringe ich den Monat unter, timedelta kennt keinen Parameter month ?BlackJack hat geschrieben:Ich würde zum rechnen mit Datumsangaben lieber die `datetime` Objekte benutzen.