如何在Python中将计算结果写入文件?
我在读取一个文件后进行了一些计算,想把结果(一个数字)存储到另一个文件里。这样我以后可以对这个文件进行操作。但是,我在把结果存入文本文件时遇到了问题。
我试过这样做:
c = fdata_arry[:,2]*fdata_arry[:,4]
d = np.sum(c)
print d
f = open('test','w')
f.write(d)
f.close()
但是在执行 f.write(d)
这一行时,我收到了这个错误:
非字符数组无法被解释为字符缓冲区
我还尝试使用 np.savetxt('test.dat',d)
,但这给了我:
索引错误:元组索引超出范围
有没有人知道我该怎么解决这个问题?请注意,d
只是一个单一的值,是几个数字的总和。
5 个回答
0
我不能确定代码的其他部分是否正确,但我注意到你在代码中没有指定文件类型:
f = open('test','w')
如果你想处理的是一个 .txt 文件,代码应该是:
f = open('test.txt','w')
1
write
方法需要一个编码过的字节数组。
如果你还在用 Python 2,可以这样写:f.write('{:d}\n'.format(d))
。
在 Python 3 中,你可以用更简单的方式:print(d, file=f)
。
1
试着在写入之前把 d 转换成字符串。
with open('test.txt', 'w') as f:
f.write(str(d))
另外,注意使用 with
这个上下文管理器,这是一种在打开文件时的好习惯。
1
如果你正在使用Numpy,我建议你看看Pandas。这个工具包有很多和它的DataFrame(二维数组)相关的输入/输出功能,比如to_csv。你可以很方便地用这些功能来读取和写入表头信息,它会自动处理数字和字符串之间的转换。
import pandas as pd
pd.DataFrame([d], columns=['Sum']).to_csv(open('test.dat', 'w'))
data_read_again = pd.read_csv('test.dat', index_col=0)
3
在Python中,写入文件时需要用到字符串或字节,而不是直接用数字。你可以试试下面的代码:
f.write('%s' % d)
或者你也可以用这段代码:
f.write('{}'.format(d))
另一方面,如果你想把一个numpy数组写入文件,并且以后再把它读回来作为一个numpy数组,那么可以使用pickle模块。