如何在Python中检查两个文件(字符串和文件)是否具有相同的内容?

Dam*_*mir 2 python python-3.x

我是Python的新手并且有疑问.如何在Python中检查两个文件(字符串和文件)是否具有相同的内容?我需要下载一些东西并重命名,但我不想用两个或更多不同的名称保存相同的东西(相同的东西可以在不同的IP地址).

Bav*_*sjo 5

如果文件很大,我会考虑像这样读取它:

compare.py:

import hashlib

teststr = "foo"
filename = "file.txt"

def md5_for_file(f, block_size=2**20):
    md5 = hashlib.md5()
    while True:
        data = f.read(block_size)
        if not data:
            break
        md5.update(data.encode('utf8'))
    return md5.digest()


md5 = hashlib.md5()
md5.update((teststr + "\n").encode('utf8'))
digest = md5.digest()
f = open(filename, 'r')
print(md5_for_file(f) == digest)
Run Code Online (Sandbox Code Playgroud)

file.txt的:

foo
Run Code Online (Sandbox Code Playgroud)

如果字符串和文件匹配,则此程序打印True


hug*_*own 5

使用文件内容的 sha1 哈希值。

#!/usr/bin/env python
from __future__ import with_statement
from __future__ import print_function

from hashlib import sha1

def shafile(filename):
    with open(filename, "rb") as f:
        return sha1(f.read()).hexdigest()

if __name__ == '__main__':
    import sys
    import glob
    globber = (filename for arg in sys.argv[1:] for filename in glob.glob(arg))
    for filename in globber:
        print(filename, shafile(filename))
Run Code Online (Sandbox Code Playgroud)

该程序在命令行上使用通配符,但这仅用于演示目的。