Her dosyaya bir Metin dosyasından (File.txt) tek tek erişecek ve sistem dizinindeki ilgili '.py' ve '.txt' dosyalarını arayacak bir python betiği oluşturuyorum. Örneğin, "COPY" (ilk satır) "File.txt" den erişilirse, arama "COPY.py" ve "COPY.txt" için yapılacaktır. Her iki dosya da bulunursa, değişiklik tarihi karşılaştırılır. Kodun sözdizimi hatası yok Ama yanlış çıktı alıyorum.Python'da iki dosyanın değiştirilme tarihi nasıl karşılaştırılır?
Benim Python kodu:
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')
Çıktı: "COPY2" ve "COPY3" "PASS" veriyoruz neden almıyorum
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
. Ben yanlış bir şekilde yapıyorum olabilir. Kodun içinde "(txttime < pytime)" olarak karşılaştırmayı değiştirmenin yanı sıra. Tüm sonuçlar çıktıda "FAIL" olarak gösteriliyor.
yerine pencere yolları için ham dizeleri kullanmak yerine sadece ileriye kullanmak eğik - bu iyi çalışır (ve aynı zamanda diğer platformlarda çalışacak). –
Burada ['os.stat (dosya adı) .st_mtime'] (http://docs.python.org/2/library/stat.html#stat.ST_MTIME) 'i kullanabilirsiniz, son değişiklik zamanını döndürür. –