0

いくつかのファイルの md5 チェックサムを取得して一時ファイルに書き込もうとしています。

import os
import hashlib

PID = str(os.getpid()) 
manifest = open('/temp/tmp/MANIFEST.'+ PID + '.tmp','w') #e.g. MANIFEST.48938.tmp
for elmt in files_input:
    input = open(elmt['file'], "r", 'us-ascii') #'us-ascii' when I ran "file --mime"
    manifest.write(hashlib.md5(input.read()).hexdigest()) 

これから、解決できないPythonエラーが発生します。

Traceback (most recent call last):
 File "etpatch.py", line 131, in <module>
    input = open(elmt['file'], "r", 'us-ascii')
TypeError: an integer is required

「from os import *」を実行してこのエラーが発生した人もいますが、私はこれを行っておらず、他のモジュールで import * を使用していません。

4

1 に答える 1

1

の 3 番目の引数open()は整数であることが期待されます。

open(name[, mode[, buffering]])

オプションの buffering 引数は、ファイルの望ましいバッファ サイズを指定します。0 はバッファなしを意味し、1 はバッファ行を意味し、その他の正の値は (おおよそ) そのサイズ (バイト単位) のバッファを使用することを意味します。ネガティブ バッファリングとは、システムのデフォルトを使用することを意味します。これは通常、tty デバイス用にライン バッファリングされ、他のファイル用に完全にバッファリングされます。省略した場合、システムのデフォルトが使用されます。[2]

于 2013-03-18T22:30:20.183 に答える