Niedawno odzyskałem tonę zdjęć z martwego dysku twardego znajomego i postanowiłem napisać program w języku Python do:Python 3. Należy napisać do pliku, sprawdzić, czy istnieje linia, a następnie ponownie napisać do pliku
Przejdź przez wszystkie pliki
sprawdzić ich md5sum
Sprawdź, czy md5sum istnieje w pliku tekstowym
Jeśli tak, daj mi znać z „duplikat stwierdzono "
Jeśli nie, dodaj MD5Sum do pliku tekstowego.
Ostatecznym celem jest usunięcie wszystkich duplikatów. Jednak po uruchomieniu tego kodu otrzymuję:
Traceback (most recent call last):
File "C:\Users\godofgrunts\Documents\hasher.py", line 16, in <module>
for line in myfile:
io.UnsupportedOperation: not readable
Czy robię to zupełnie źle, czy po prostu coś nie rozumiem?
import hashlib
import os
import re
rootDir = 'H:\\recovered'
hasher = hashlib.md5()
with open('md5sums.txt', 'w') as myfile:
for dirName, subdirList, fileList in os.walk(rootDir):
for fname in fileList:
with open((os.path.join(dirName, fname)), 'rb') as pic:
buf = pic.read()
hasher.update(buf)
md5 = str(hasher.hexdigest())
for line in myfile:
if re.search("\b{0}\b".format(md5),line):
print("DUPLICATE HAS BEEN FOUND")
else:
myfile.write(md5 +'\n')
O swojej wcięcia, cztery pomieszczenia jest lepsze do 8. Byłoby dużo łatwiej nam wszystkim jak dobrze czytać. Zobacz [PEP8] (http://www.python.org/dev/peps/pep-0008/#indentation). – RyPeck