Moin,
ich hab da mal ne Frage bezüglich eines backup scripts was ich mir gerade schreibe.
Und zwar wollte ich anhand der mtime die files sichern die in den letzten 24h verändert wurden.
Frage ist nur wie gehe ich das am Besten an?
Meine jetzige Idee wäre, da ich ehrlich gesagt nur sehr begrenzte lust darauf habe mich mit mehren dates (komm gerade nicht auf die mehrzahl von datum) herumzuplagen.
time.time() zu nehmen da kann man einfach mit rumrechnen.
von jetzt -24h und dann schauen ob die mtime irgendwo dazwischen liegt.
Allerdings kommt mir das komisch vor, daher wollte ich mal fragen ob da nicht ne bessere methode gibt die mir her jemand verraten kann.
Also ein einfacheren Weg ne Liste mit files zu bekommen die die letzten 24h (nicht früher/später) verändert wurden.
Sry für wenn die Frage irgendwie doof formuliert ist.
mtime letzte 24h
@taake: Ich mag ja das `datetime`-Modul. Damit bekommt man lesbareren Code mit `timedelta` statt 24h in Sekunden auszudrücken.
Weiß nicht, ich mag datums kram nicht so, da muss man immer so viel hin und her ...
Daher finde ich time.time() toll - nicht wirklich gut zu lesen aber einfach zu händeln.
Weiß auch nicht warum ich gestern da so probleme mit hatte, gerade eben gings ganz leicht aus der hand ....
Daher finde ich time.time() toll - nicht wirklich gut zu lesen aber einfach zu händeln.
Weiß auch nicht warum ich gestern da so probleme mit hatte, gerade eben gings ganz leicht aus der hand ....
Code: Alles auswählen
def dailybackup():
now = time.time()
l24h = now - int(86400) # 24h in sec
for filename in os.listdir( source_dir):
fileliste = os.path.join(source_dir, filename)
mtime = os.stat(fileliste).st_mtime
if mtime > l24h:
print fileliste
@taake: Was muss man denn da bitte so viel hin und her? Man muss beim lesen und beim schreiben IMHO *weniger* nachdenken, eben weil es klarer ist.
Wo kommt denn `source_dir` her? Und warum heisst eine Zeichenkette mit einem Pfad `fileliste`?
Wo kommt denn `source_dir` her? Und warum heisst eine Zeichenkette mit einem Pfad `fileliste`?
Code: Alles auswählen
#!/usr/bin/env python
import os
from datetime import datetime as DateTime, timedelta as TimeDelta
def dailybackup(source_dir):
start_time = DateTime.now() - TimeDelta(hours=24)
result = list()
for filename in os.listdir(source_dir):
path = os.path.join(source_dir, filename)
modification_time = DateTime.fromtimestamp(os.path.getmtime(path))
if modification_time >= start_time:
result.append(path)
return result
Okay das ist wirklich wesentlich hübscher (besser) gelöst.
source_dir ist global definiert, da ich es im script öfters verwende.
Und der name fileliste ist zugegen etwas irreführend, allerdings ist er mir beim schreiben so in kopf gekommen daher hab ich ihn genommen.
Hatte irgendwann mal das problem das ich mit time() und datetime() arbeiten musste (kA mehr warum ist schon etwas her) und das war kein spass, jedenfalls für mich nicht.
Daher nehme ich meist time.time() finde ich besser (logischer) auch wenn man an den stellen kurz nachdenken muss.
Danke übrigens für den rewrite - so lernt man am Besten wenn man danach noch mal sieht wie man es besser macht.
Hab mir python selbst beigebracht daher ist es immer gut zu sehen wies besser geht.
source_dir ist global definiert, da ich es im script öfters verwende.
Und der name fileliste ist zugegen etwas irreführend, allerdings ist er mir beim schreiben so in kopf gekommen daher hab ich ihn genommen.
Hatte irgendwann mal das problem das ich mit time() und datetime() arbeiten musste (kA mehr warum ist schon etwas her) und das war kein spass, jedenfalls für mich nicht.
Daher nehme ich meist time.time() finde ich besser (logischer) auch wenn man an den stellen kurz nachdenken muss.
Danke übrigens für den rewrite - so lernt man am Besten wenn man danach noch mal sieht wie man es besser macht.
Hab mir python selbst beigebracht daher ist es immer gut zu sehen wies besser geht.