10

Python 2.6.2 を使用しています。filecmp モジュールのドキュメントには次のように書かれています。

filecmp モジュールは、さまざまなオプションの時間/正確性のトレードオフを使用して、ファイルとディレクトリを比較する関数を定義します。

そして、filecmp.cmp 関数の:

filecmp.cmp(f1, f2[, 浅い])

f1 と f2 という名前のファイルを比較し、等しい場合は True を返し、そうでない場合は False を返します。

浅いが与えられ、false でない限り、同一の os.stat() 署名を持つファイルは等しいと見なされます。

彼らがしていないのは、 で得られる正確さのレベルを指定することだけですshallow=False。それで、何をしshallow=Falseますか?それはどのくらい正しいですか?

4

1 に答える 1

13

ソースを調べると、 が であるか であるかに関係なく、のいくつかの選択されたプロパティを最初にチェックすることがわかりますfilecmp.py。調べた stat プロパティが同じ場合、 を返します。それ以外の場合は、内部キャッシュをチェックして、ファイルが以前に比較されているかどうかを確認します。ある場合は、 を返します。それ以外の場合は、両方のファイルからデータのチャンクを読み取り、ファイルの最後に到達するまで内容を正確に比較します。2 つのファイルの内容がまったく同じ場合に返されます。shallow=Falsefilecmp.cmpos.stat()shallowTrueFalseTrueTrueBUFSIZE = 8*1024True

于 2010-08-06T06:38:48.437 に答える