WindowsError:[エラー3]パスが見つかりません指定された(?パスが長すぎます)WindowsError:[エラー3]指定されたパスが見つかりません(ときのパスが長すぎる?)
I 2つのディレクトリ間で一意のファイルを見つけるためのスクリプトを作成しています。これを行うために、私はos.walk()
を使用してファイルを処理し、同じサイズのファイルが存在する場合は、それらが同じであることを確認するためにハッシュします(プロセス内のファイルを開きます)。問題は、ファイルを開いたときに上記のエラーが発生することです。この問題が発生する最も一般的な理由は、パスが正しく結合されていないために、スクリプトが存在しないファイルを開こうとするためです。これは私には当てはまりません。
さまざまなディレクトリの組み合わせを試した後、エラーが発生したファイルに深いディレクトリ構造と長いファイル名があるように見えるパターンに気付き始めました。私はこの問題の他の理由を考えることはできません。文字エンコーディングのエラーはありません。私はすべてのパスをUTF-8にデコードします。パスはos.walk()
によって存在します。
マイ徒歩コード:
for root, dirs, files in os.walk(directory):
for filename in files:
file_path = os.path.join(root, filename)
私のハッシュコード:
def hash(file_path):
with open(dir_file, 'rb') as f:
hasher = hashlib.md5()
while True:
buf = f.read(byte_size)
if buf != '':
hasher.update(buf)
else:
break
result = hasher.hexdigest()
return result
編集:問題が登場し、最新のパスは、二重の会計142個の文字を含む深い5つのディレクトリ(でしたバックスラッシュ)、ファイル名はさらに122文字です