코드를 작성하지 않겠습니다. 그래도, 당신이 할 수있는 일 :
- 은 사전 키 = 파일 이름, 가치를 창출 = MD5/SHA1 무엇이든,
dict1
- 은 사전 키를 생성 말할 = MD5/SHA1은, 값은 = 파일 이름,
dict2
말
피클을 누른 다음 키와 두 버전의 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
얻을 수 있지만, 결과는 라인 종단, 빈 줄의 수에 따라 달라질 수 있습니다 너 자신은 변화하지 않는다. 그런 다음 변경 될 어딘가에 코멘트를 추가하십시오 ... 프로젝트에 행운을 비네.
편집 2 : 나중에 생각하면 : 당신은 힘내 구성 시스템에 대해 읽을 수 있습니다. 파일이 변경되었는지 확인하기 위해 CRC/MD5 시스템을 사용합니다. 나는 그것에 대해 많이 알지 못하지만, 당신이 코딩하지 않고서는 당신의 목적을 처리 할 수 있습니다.
sha1 또는 md5 해시를 사용하지 않는 이유 – peter
파일의 CRC에는 일반적으로 파일 이름이 포함되지 않습니다. CRC가 계산되는 데이터에 파일 이름을 포함 시키려면 특별한 노력이 필요합니다. –
파일 이름이 알고리즘 (crc/sha1/md5 등)의 출력에 영향을 미친다 고 가정했습니다. 파일의 내용 만이 알고리즘에 의해 사용된다면 다른 파일 이름을 가진 2 개의 파일이지만 내용과 같은 출력은 동일한 출력을 생성합니다. 그 통찰력은 나의 문제를 멋지게 해결한다 - 고마워! – user3535074