2015-01-05 2 views
15

Я пытаюсь добавить данные в файл с помощью функции savetxt numpy. Ниже приведен рабочий пример минимальногоpython3-numpy: добавление к файлу с использованием numpy savetxt

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

ошибка, что я получил что-то о типе ошибки

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

Эта ошибка не происходит в python2 так мне интересно, что может быть проблема , Может кто-нибудь мне помочь?

+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() 

ссылка: питон - Как написать Numpy массив в файл CSV? - Переполнение стека How to write a numpy array to a csv file?

+0

Долгое время смотрел эту опцию 'ba'. Благодарю. – dorien

+0

Параметр 'b' не работал с np.savetxt на моей машине. Может ли кто-нибудь подтвердить это? –

+0

@HyunjunKim Мой питон (python-3.5, numpy-1.13.3 на Ubuntu 16.04) отлично работает над кодом. Если вы попробуете строку, добавьте тип данных ('np.savetxt (f, [" AAA "],"% s ")') – user4352571

Смежные вопросы