Lösung datetime
in Python mit
import time
import datetime
def change_filename(fn):
# EXTRACT JUST THE TIMESTAMP AS A STRING
timestamp_str = fn[7:22]
# CONVERT TO UNIX TIMESTAMP
timestamp = time.mktime(datetime.datetime.strptime(timestamp_str, "%Y%m%d-%H%M%S").timetuple())
# SUBTRACT AN HOUR (3600 SECONDS)
timestamp = timestamp - 3600
# CHANGE BACK TO A STRING
timestamp_str = datetime.datetime.fromtimestamp(timestamp).strftime("%Y%m%d-%H%M%S")
# RETURN THE FILENAME WITH THE NEW TIMESTAMP
return fn[:7] + timestamp_str + fn[22:]
Dies berücksichtigt mögliche Veränderungen in den Tag, den Monat und das Jahr, die, indem sie den Zeitstempel wieder eine Stunde passieren könnte. Wenn Sie eine 12-Stunden-Zeit anstelle von 24 Stunden verwenden, können Sie stattdessen die Formatzeichenfolge "%Y%m%d-%I%M%S"
verwenden; siehe Python docs.
Credit: Convert string date to timestamp in Python und Converting unix timestamp string to readable date in Python
Dies setzt voraus, dass Ihr myCode
einer festen Länge ist, wenn Sie nicht die str.split
Methode verwenden, um die Stunden von nach dem -
zu ziehen, oder wenn die Dateinamen haben eine unbekannte Anzahl/Platzierung von -
s, können Sie unter Verwendung regular expressions die Stunden und replace sie mit capturing groups suchen. In Python können Sie eine Kombination aus glob
und shutil.move
verwenden, um durch Ihre Dateien zu gehen und sie mit dieser Funktion umzubenennen.Sie können einen regulären Ausdruck verwenden, um sicherzustellen, dass Sie nur mit Dateien arbeiten, die Ihrem Benennungsschema entsprechen, wenn sich auch andere Dateien im Verzeichnis befinden.
Naive Lösung
Mit den Einsprüchen über die Länge von myCode
und wie oben Dateiformat.
Wenn Ihre Zeitstempel das 24-Stunden-Format verwenden (00-23 Stunden), können Sie die Stunden durch Subtraktion von 1 ersetzen, wie Sie sagen; aber man müsste conditionals verwenden, um sicherzustellen, dass Sie kümmern sich um 23
in 00
drehen, und kümmern uns um das Hinzufügen einer führenden Null Stunden weniger als 10
Ein Beispiel in Python wäre:
def change_filename(fn):
hh = int(fn[16:18])
if hh == 0:
hh = 23
else:
hh -= 1
hh = str(hh)
# ADD LEADING ZERO IF hh < 10
if len(hh) == 1:
hh = '0' + hh
return fn[:16] + str(hh) + fn[18:]
Wie oben erwähnt, ist ein wichtiger Punkt zu beachten, dass dieser Ansatz den Tag nicht um eins zurückstellt, wenn die Stunde 00 ist und zu 23 geändert wird, also müssten Sie das auch berücksichtigen. Dasselbe könnte für den Monat und das Jahr passieren, und Sie müssten dies alles berücksichtigen. Es ist viel besser, datetime
zu verwenden.