1

Python3を使用して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
$ 

コード:

#!/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()
4

1 に答える 1

5

あなたがするとき

sys.stdout = sys.stdout.detach()

エンコーディングとデコーディングのためにラップされたものではなくバッファprintを取得するため、Python 3 のターミナルで通常の機能を削除します。する前に、次のことを行う必要があります。print

sys.stdout = sys._stdout

原本をstdout取り戻すために。

于 2012-04-18T04:14:14.943 に答える