我不打算爲你寫代碼。 不過,你可以做什麼:
- 創建辭典鍵=文件名,值= MD5/SHA1什麼的,說
dict1
- 創建辭典鍵= MD5/SHA1,值=文件名,說
dict2
pickle他們,然後下一步檢查比較鍵和dict1兩個版本的值:如果差異的值,文件內容已經改變 dict2的相同之處:如果差異的值,文件名已更改,相同的內容。
你不能追查什麼,但是文件名+文件內容改變。您將無法查看它是否是刪除+新文件或重命名+更改內容。這是限制。
編輯:我在說謊,不寫代碼。我已經編寫了一些示例代碼來計算當前模塊上的MD5校驗和(僅用於演示目的)。
import hashlib
with open(__file__,"rb") as f: # __file__ is full path to current .py file
contents=f.read()
m = hashlib.md5(contents)
print(m.hexdigest())
我得到ebb6e4753cfd7e23dae884a784bc1587
,但結果可能因線路終端的空白行數量變化......
我建議你嘗試一下自己,然後重命名/ Python的文件複製到另外一個證明你自己,它不會改變。然後添加評論某處它將改變...祝你好運與你的項目。
編輯2:事後編輯:您可以閱讀有關Git配置系統。它使用CRC/MD5系統來檢查文件是否更改。我對此不甚瞭解,但它可能會在您編寫任何代碼時服務於您的目的。
爲什麼不使用sha1或md5哈希 – peter
文件的CRC通常不包含文件名。您需要特別努力將文件名包含在CRC計算的數據中。 –
我認爲文件名會影響算法的輸出(crc/sha1/md5等)。如果只有文件的內容被算法使用,那麼具有不同文件名但是像內容的兩個文件將產生相同的輸出。這種見解很好地解決了我的問題 - 謝謝! – user3535074