![](/img/trans.png)
[英]Error while trying to rename downloaded pdf file in Python Selenium
[英]Python: Hash of pdf file vs downloaded object
我想检查网络服务器上的pdf内容是否与我的计算机上的pdf内容相同。 我尝试了一下但没有成功:
>>> import requests, hashlib
>>> pdf = requests.get('<http link to pdf file>')
>>> type(pdf.content)
<class 'bytes'>
>>> type(repr(open('file.pdf','rb')).encode('utf-8'))
<class 'bytes'>
>>> hashlib.sha256(repr(open('file.pdf','rb')).encode('utf-8')) == hashlib.sha256(repr(pdf.content).encode('utf-8')).hexdigest()
False
>>> hashlib.sha256(repr(open('file.pdf','rb')).encode('utf-8')) == hashlib.sha256(pdf.content).hexdigest()
False
您正在散列文件对象的UTF-8编码的repr
,而不是文件的内容。 无论如何,没有理由使用repr
。 直接哈希内容。
>>> with open('file.pdf', 'rb') as f:
... h1 = hashlib.sha256(f.read()).digest()
>>> h2 = hashlib.sha256(pdf.content).digest()
>>> h1 == h2
True
第一个散列是文件对象表示形式的散列(而不是其内容):
repr(open('file.pdf','rb'))
# "<_io.BufferedReader name='file.pdf'>"
repr(open('file.pdf','rb')).encode('utf-8')
# b"<_io.BufferedReader name='file.pdf'>"
您的第一个哈希超过了bytes
: b"<_io.BufferedReader name='file.pdf'>"
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.