2011-02-02 25 views
0

私は、ファイルを比較し、その重複をPythonで表示するプログラムを作成しようとしています。誰もがこれに関連する良い機能や方法を知っていますか?私は失われています...2つのビデオファイルを比較するPythonメソッドまたはクラス?

+2

イメージまたは生のバイトを比較しますか? (すなわち、本質的に同じビデオではあるが、異なる解像度/品質/それ以外のものが一致するかどうかの2つのビデオファイルがあるかどうか) –

+0

これまでに実装が簡単なこと。 – DCIndieDev

答えて

0

私は最初にファイル名とファイルサイズの比較を開始します。一致が見つかった場合は、ファイルのバイトをループして比較することができますが、これはおそらくかなり集中しています。

私はPythonでこれを行うことができるライブラリを知りません。

2

あなただけの正確な重複を探している場合は、両方のMD5 hashを行うと、それらが一致するかどうかを確認:

import hashlib 

file1 = open('file1.avi', 'r').read() 
file2 = open('file2.avi', 'r').read() 

if hashlib.sha512(file1).hexdigest() == hashlib.sha512(file2).hexdigest(): 
    print 'They are the same' 
else: 
    print 'They are different' 

ない場合は、私がOpenCV's Python Bindingsを試してみたし、彼らはフレーム毎に一致しているかどうかを確認。

+0

MD5が壊れていることに注意してください。一般的なファイルの一意性を比較するのには十分ですが、攻撃者は「偽のマッチ」を作成する可能性があります。 –

+0

私はあなたがビデオファイルを比較して衝突を起こすのではないかと疑います。しかし、あなたが主張するなら、私は少し良いものを使用します;) – Blender

0

os.walkを使用してファイルツリーを調べます。

ファイルごとに、ファイルサイズとシグネチャ(最初の16バイト?最初の512バイトのハッシュ?フルファイルのハッシュ?)によってインデックス付けされた絶対パス+ファイル名を格納します。

この作業が完了すると、最終的にファイルサイズが決まります。各サイズについて、ファイル署名のdict;各署名について、その署名を共有するすべてのファイルのリスト。ファイルの署名がフルファイルに基づいていない場合、または重大な衝突の可能性がある場合は、衝突するファイルだけを詳細に比較できます。

関連する問題