2017-05-08 21 views
0

私は現在I/Oストリーム用のコードの一部としてこれを実行しています。次のエラーが発生します。TypeError: 'map'オブジェクトは添字ではありません印刷のために(bytest [:10])。 Python 3でそれを実行する正しい方法は何ですか?Python 3 - TypeError: 'map'オブジェクトは添え字ではありません

with open("/bin/ls", "rb") as fin: #rb as text file and location 
    buf = fin.read() 
bytes = map(ord, buf)  
print (bytes[:10]) 
saveFile = open('exampleFile.txt', 'w') 
saveFile.write(bytes) 
saveFile.close() 

答えて

3

Python 3でmapはジェネレータを返します。最初にlistを作成してみてください。

with open("/bin/ls", "rb") as fin: #rb as text file and location 
    buf = fin.read() 
bytes = list(map(ord, buf)) 
print (bytes[:10]) 
saveFile = open('exampleFile.txt', 'w') 
saveFile.write(bytes) 
saveFile.close() 

あなたはそれが醜いだと思うならば、あなたはリストジェネレータに置き換えることができます://ドキュメント:

bytes = [ord(b) for f in buf] 
+2

あなたは([** 'itertools.islice' **] HTTPSを使用することができます。 –

+0

@ PeterWoodはい、特定のスライスを一度読み取る必要がある場合は、それはさらに優れている可能性があります。 – jdehesa

関連する問題