Python 将数组写入文本文件
我正试图按照下面使用此代码的示例将5x3数组写入文本文件Python 将数组写入文本文件,python,python-3.x,numpy,Python,Python 3.x,Numpy,我正试图按照下面使用此代码的示例将5x3数组写入文本文件 import numpy as np data = np.loadtxt('array_float.txt') with open('out.txt', 'w') as outfile: for data_slice in data: np.savetxt(outfile, data_slice, fmt='%4.1f') 它会导致以下错误: File C:\Python34\lib\site-packages\
import numpy as np
data = np.loadtxt('array_float.txt')
with open('out.txt', 'w') as outfile:
for data_slice in data:
np.savetxt(outfile, data_slice, fmt='%4.1f')
它会导致以下错误:
File C:\Python34\lib\site-packages\numpy\lib\npyio.py", line 1087, in savetxt
fh.write(asbytes(format % tuple(row) + newline))
TypeError: must be str, not bytes
似乎savetxt不喜欢outfile对象。当我指定实际的输出文件名时,我可以让savetxt工作。例如,这项工作:
np.savetxt('out.txt', data_slice, fmt='%4.1f')
但是只有数组的最后一行保存到'out.txt'。您应该以二进制模式打开文件(使用
ab
或wb
)
我建议您使用Python的pickle模块。它允许以很少的复杂度或代码行保存任何数组 试试这个:
import pickle
f = open(name_of_file,'w')
pickle.dump(f,name_of_array)
f.close()
谢谢,这是可行的,但是数组都在输出文件的一行上。如何使数组的每一行写入输出文件中的新行?@DaveLeighton Try
np.savetxt(outfile,data\u slice,fmt='%4.1f',newline=“\n”)
相反是的,这是我尝试的第一件事,但没有改变输出。仍然都在一行。@RafaelCardoso:为了便于在以二进制模式打开文件的情况下移植到Windows系统,这不应该类似于newline=os.linesep
?Windows文本编辑器通常将\n
本身视为纯空白或无空白,只有\r\n
实际被渲染为换行符。默认值毕竟已经是\n
,因此newline=“\n”
不会改变行为。
import pickle
f = open(name_of_file,'w')
pickle.dump(f,name_of_array)
f.close()