如何在python中将计算结果写入文件?

时间:2014-09-12 22:01:45

标签: python output

我正在读取文件后进行一些计算,并希望将结果(单个数字)存储到另一个文件中。我希望以后可以使用此文件执行操作。我在将结果存储到文本文件时遇到问题。

我试过了:

    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),但这给了我:

  

IndexError:元组索引超出范围

我知道如何解决这个问题?请注意,d只是一个值,它是几个数字的总和。

5 个答案:

答案 0 :(得分:3)

要写入文件,python需要字符串或字节,而不是数字。尝试:

f.write('%s' % d)

f.write('{}'.format(d))

另一方面,如果您想将numpy数组写入文件,然后在中将其作为numpy数组读回,请使用pickle模块。

答案 1 :(得分:1)

尝试在编写之前将d转换为字符串。

with open('test.txt', 'w') as f:
    f.write(str(d))

另请注意使用with上下文管理器,这是打开文件时始终使用的好习惯。

答案 2 :(得分:1)

write需要一个编码的字节数组。

如果您仍在编写Python 2编码,则可以使用f.write('{:d}\n'.format(d))

在Python 3中,您可以改用清洁工print(d, file=f)

答案 3 :(得分:1)

鉴于你正在与Numpy合作,我建议你看看熊猫。该包具有与其DataFrame(2D数组)相关联的一系列输入/输出函数/方法,例如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)

答案 4 :(得分:0)

我不能确切地说代码的其余部分是否正确但我注意到你没有在代码中指定文件类型:

f = open('test','w')

如果它是.txt,那么你应该阅读:

f = open('test.txt','w')