Comment comparer la date de modification de deux fichiers en python?
Je suis entrain de créer un script python qui permettra d'accéder à chaque ligne d'un fichier Texte(dire File.txt), un par un, puis la recherche de correspondant".py' et '.txt fichier dans le répertoire système. Par exemple, si "COPIE"(la première ligne) est accessible à partir de "File.txt" ensuite, la recherche sera fait pour "COPY.py" et "COPY.txt". Si les deux fichiers se trouvent alors leur date de modification seront comparés. Code avez pas d'erreur de syntaxe Mais je suis la mauvaise sortie.
Mon code Python est:
for line in fileinput.input(r'D:\Python_Programs\File.txt'):
line = line[0:-1]
sc = ''.join((line,'.py'))
lo = ''.join((line,'.txt'))
for root, dirs, files in os.walk(r'D:\txt and py'):
if sc in files:
pytime = time.ctime(os.path.getmtime(os.path.join(root, sc)))
print(sc, ' :', pytime)
for root, dirs, files in os.walk(root):
if txt in files:
txttime = time.ctime(os.path.getmtime(os.path.join(root, txt)))
print(txt, ' :', txttime)
if (txttime > pytime):
print('PASS', '\n')
else:
print('FAIL', '\n')
De sortie:
COPY.py : Mon Aug 27 10:50:06 2012
COPY.txt : Mon Feb 04 11:05:31 2013
PASS #Expected = PASS
COPY2.py : Fri Feb 08 16:34:43 2013
COPY2.txt : Sat Sep 22 14:19:32 2012
PASS #Expected = FAIL
COPY3.py : Fri Feb 08 16:34:53 2013
COPY3.txt : Mon Sep 24 00:50:07 2012
PASS #Expected = FAIL
Je ne reçois pas pourquoi "COPY2" et "COPY3" donnent "PASS". Peut-être que je fais une mauvaise manière.
Ainsi que sur la modification de la comparaison comme "si (txttime < pytime)" dans le code.
Tous les résultats montrent que "l'ÉCHEC" de la production.
source d'informationauteur AshA
Vous devez vous connecter pour publier un commentaire.
time.ctime
retourne une chaîne de caractères et'Fri Feb 08 16:34:53 2013' < 'Mon Sep 24 00:50:07 2012'
temps.ctime()
formats un temps comme une chaîne de caractères, de sorte que vous êtes en comparant les chaînes"Fri Feb 08 16:34:43 2013"
et"Sat Sep 22 14:19:32 2012"
textuellement. Il suffit de ne pas le faire et de comparer lesfloat
s quegetmtime()
vous donne directement: