Gần đây tôi đã khôi phục một ảnh tấn từ ổ đĩa cứng của một người bạn và tôi quyết định viết chương trình trong python để:Python 3. Cần ghi vào một tệp, kiểm tra xem có tồn tại một dòng hay không, sau đó ghi vào tệp một lần nữa
Đi qua tất cả các file
Check md5sum của họ
Kiểm tra để xem nếu md5sum tồn tại trong một file văn bản
Nếu có, cho tôi biết với "DUPLICATE ĐÃ ĐƯỢC TÌM tHẤY "
Nếu không, hãy thêm MD5Sum vào tệp văn bản.
Mục tiêu cuối cùng là xóa tất cả các mục trùng lặp. Tuy nhiên, khi tôi chạy mã này, tôi nhận được thông tin sau:
Traceback (most recent call last):
File "C:\Users\godofgrunts\Documents\hasher.py", line 16, in <module>
for line in myfile:
io.UnsupportedOperation: not readable
Tôi làm điều này hoàn toàn sai hoặc tôi chỉ hiểu nhầm điều gì đó?
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')
Giới thiệu về thụt đầu dòng, bốn khoảng cách thích hợp hơn 8. Mọi thứ dễ đọc hơn. Xem [PEP8] (http://www.python.org/dev/peps/pep-0008/#indentation). – RyPeck