我是Python的新手并且有疑问.如何在Python中检查两个文件(字符串和文件)是否具有相同的内容?我需要下载一些东西并重命名,但我不想用两个或更多不同的名称保存相同的东西(相同的东西可以在不同的IP地址).
如果文件很大,我会考虑像这样读取它:
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
使用文件内容的 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)
该程序在命令行上使用通配符,但这仅用于演示目的。
归档时间: |
|
查看次数: |
2959 次 |
最近记录: |