2011-07-21 7 views
1

私はos.walkを使用して2つのフォルダを比較し、それらが正確に同じファイルを含んでいるかどうかを確認しています。ただし、これはファイル名のみをチェックします。私は、ファイルのサイズが同じであることを確認したい、そしてそれらが異なる報告バックである場合。あなたはファイルサイズをos.walkから得ることができますか?os.walk中にファイルサイズを取得

+0

ファイルサイズが等しいとみなしても、ファイルが同じであるとは限りません。 difflibモジュールを使用したり、チェックサムを計算することができます。 (ああ、pythonサイトは現時点では私のために応答していないので、URLを提供することはできません。)つまり、ファイルサイズについては、これまでの質問を参照してください:http://stackoverflow.com/questions/2104080/how- to-check-file-size-in-python – GreenMatt

答えて

5

os.walkを使用せずにファイルサイズを取得するのと同じ方法で、os.statとします。

for root, dirs, files in os.walk(some_directory): 
    for fn in files: 
     path = os.path.join(root, fn) 
     size = os.stat(path).st_size # in bytes 

     # ... 
2

os.path.getsize(パス)があなたのファイルのファイルサイズを与えることができますが、同じ大きさは常にそれらが同一であるという意味ではありません2つのファイルを持つ:あなただけのルートに参加することを覚えておく必要があります。あなたはファイルの内容を読んで比較するMD5またはハッシュを持つことができます。

+0

ファイルのサイズが等しくないと、ファイルが同一ではないことが保証されます。 – Vatine

+0

ファイルが同じであると意図的に偽っている人がいないことを心配していないなら、MD5よりもはるかに高速なチェックサムアルゴリズムがあります。ファイルの最終更新時刻を見ることは、同じサイズのファイルを確認する良い方法です。ファイルを開く必要がない場合は同じです。 – agf

1

他の人が言ったように:あなたはstatでサイズを得ることができます。しかし、dirsの間で比較を行う場合は、dircmpを使用することができます。

関連する問題