Я создаю скрипт python, который будет обращаться к каждой строке из текстового файла (скажем File.txt) один за другим, а затем искать соответствующие файлы .py и .txt в системном каталоге. Например, если «COPY» (первая строка) открывается из «File.txt», то поиск будет выполнен для «COPY.py» и «COPY.txt». Если оба файла будут найдены, их дата изменения будет сравниваться. Код не имеет синтаксической ошибки. Но я получаю неправильный вывод.Как сравнить измененную дату двух файлов в python?
код My Питон:
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')
Выход:
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
Я не получаю, почему "COPY2" и "COPY3" дают "PASS". Возможно, я делаю это неправильно. Как и при изменении сравнения как "if (txttime < pytime)" в коде. Все результаты отображаются как «FAIL» на выходе.
Вместо того, чтобы использовать сырые строки для окон путей, а не просто использовать прямую косую черту - он будет работать нормально (и также будет работать и на других платформах). –
вы можете использовать ['os.stat (filename) .st_mtime'] (http://docs.python.org/2/library/stat.html#stat.ST_MTIME) здесь, он возвращает последнее время модификации. –