2015-01-05 30 views
15

numpyのsavetxt関数を使用してファイルにデータを追加しようとしています。以下は、私が得たエラーが、私は問題は何ができるか疑問に思って、このエラーはpython2では発生しません、エラーの種類について何かpython3-numpy:numpy savetxtを使用してファイルに追加する

File "/usr/lib/python3/dist-packages/numpy/lib/npyio.py", line 1073, in savetxt fh.write(asbytes(format % tuple(row) + newline)) TypeError: must be str, not bytes

最小作業例

#!/usr/bin/env python3 
import numpy as np 
f=open('asd.dat','a') 
for iind in range(4): 
    a=np.random.rand(10,10) 
    np.savetxt(f,a) 
f.close() 

です。誰か助けてくれますか?

+3

ファイルをテキストモードではなくバイナリで開く必要があります: 'f = open( 'asd.dat'、 'ba')'。また、エラーが発生した場合にファイルハンドルが正しく閉じられるようにするには、 'with'ステートメントを使用することを検討してください。 – cel

+1

可能な重複:https://stackoverflow.com/questions/14437054/why-should-i-give-savetxt-a-file-opened-in-binary-rather-than-text-mode – nwk

+0

@celそれが問題を解決しました、ありがとう – Meenakshi

答えて

19

ファイルをバイナリモードで開く必要があります。

#!/usr/bin/env python3 
import numpy as np   
f=open('asd.dat','ab') 
for iind in range(4): 
    a=np.random.rand(10,10) 
    np.savetxt(f,a) 
f.close() 

参照: のpython - csvファイルにnumpyの配列を作成する方法? How to write a numpy array to a csv file?

+0

この 'バ'オプションのために長い時間を探していました。ありがとう。 – dorien

+0

'b'オプションは、自分のマシン上でnp.savetxtと動作しませんでした。誰でもそれを確認できますか? –

+0

@HyunjunKim私のpython(Python-3.5、Ubuntu 16.04のnumpy-1.13.3)はコードよりもうまく機能します。あなたが文字列を試してみたら、データ型を追加してください。 'np.savetxt(f、[" AAA "]、"%s ")') – user4352571

関連する問題