回覆列表
  • 1 # 編碼之道

    其實這個原理也很簡單,就是以二進位制開啟兩個檔案,逐個位元組的比較兩個檔案對應位置的內容是否相同,如果有任何一個位置的內容不相同,即認為兩個檔案不相同。當然,考慮兩個大小不同的檔案不可能相同,所以在檢查內容之前可以先判斷大小。

    好了,原理已經說清楚,下面直接上程式碼:

    def is_file_same(file1, file2):with open(file1, "rb") as f1:content1 = f1.read()with open(file2, "rb") as f2:content2 = f2.read()# if two files have different size, they cann"t be same if len(content1) != len(content2):return False else:# if two files have same size, compare the content byte by byte file_len = len(content1)for pos in range(0, file_len):# return False if any byte in same position are different if content1[pos] != content2[pos]:return False # has no different, the two files are same return True

    程式碼竟然不給著色和縮排,還是看下圖比較舒服,^_^

  • 2 # 山海皆可平z

    相同檔案的定義是什麼?

    如果是文字檔案,那麼可以用哪個以下方式來判斷。

    python中提供了很便捷的方法來判斷兩個檔案的內容是否相同,只要兩行程式碼:>>>import filecmp>>>filecmp.cmp(r"e:\1.txt",r"e:\2.txt")如果兩個檔案相同,會輸出True,否則會輸出false。

    如果不是文字檔案,那麼可以生成檔案雜湊值來比較。

    import hashlib

    def getHash(f):

    line=f.readline()

    hash=hashlib.md5()

    while(line):

    hash.update(line)

    line=f.readline()

    return hash.hexdigest()

    def IsHashEqual(f1,f2):

    str1=getHash(f1)

    str2=getHash(f2)

    return str1==str2

    if __name__ == "__main__":

    f1=open("D:/2.iso","rb")

    f2=open("E:/wenjian/1.iso","rb")

    print IsHashEqual(f1,f2)

    計算2個檔案的MD5值,大檔案計算較慢

  • 中秋節和大豐收的關聯?
  • 不是經期卻有血?