私はテキストファイル(例えばFile.txt)から各行にアクセスし、システムディレクトリに対応する '.py'と '.txt'ファイルを検索するPythonスクリプトを作成しています。たとえば、 "COPY"(最初の行)に "File.txt"からアクセスすると、 "COPY.py"と "COPY.txt"が検索されます。両方のファイルが見つかった場合は、その変更日が比較されます。コードに構文エラーはありませんが、出力が間違っています。Pythonで2つのファイルの修正日を比較するには?
私のPythonコードです:
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と表示されています。
代わりに、Windowsのパスの生の文字列を使用するのではなく、単にスラッシュを使用する - それが正常に動作します(とも他のプラットフォームで動作します)。 –
ここで['os.stat(filename).st_mtime'](http://docs.python.org/2/library/stat.html#stat.ST_MTIME)を使用すると、最後の変更時刻が返されます。 –