Duk*_*gal 1 python string buffer md5
我试图使用Python 3从stdin计算文件的md5哈希
这是返回的错误消息.我不明白为什么它不返回md5哈希.任何帮助赞赏.
$./pymd5.py < tmp.pdf
Traceback (most recent call last):
File "./pymd5.py", line 29, in <module>
main()
File "./pymd5.py", line 25, in main
print(m.hexdigest())
TypeError: 'str' does not support the buffer interface
$
Run Code Online (Sandbox Code Playgroud)
代码:
#!/usr/local/bin/python3.2
import sys
import hashlib
BUFSIZE = 4096
def make_streams_binary():
sys.stdin = sys.stdin.detach()
sys.stdout = sys.stdout.detach()
def main():
make_streams_binary()
m = hashlib.md5()
while True:
data = sys.stdin.read(BUFSIZE)
if not data:
break
m.update(data)
print(m.hexdigest())
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
当你这样做
sys.stdout = sys.stdout.detach()
Run Code Online (Sandbox Code Playgroud)
它取消了print在Python 3上终端正常使用的能力,因为你获得了一个缓冲区而不是一个用于编码和解码的缓冲区.在你之前print,你应该做:
sys.stdout = sys._stdout
Run Code Online (Sandbox Code Playgroud)
要原来的stdout回来.
| 归档时间: |
|
| 查看次数: |
757 次 |
| 最近记录: |