【问题标题】:How to write the result of a calculation to a file in python?如何将计算结果写入python中的文件?
【发布时间】:2014-09-12 22:01:44
【问题描述】:

我在读取一个文件后进行一些计算,并希望将结果(单个数字)存储到另一个文件中。我希望以后能够对这个文件做一些事情。我在将结果存储到文本文件时遇到问题。

我试过了:

    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 只是一个值,它是几个数字的总和。

【问题讨论】:

标签: python output


【解决方案1】:

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

f.write('%s' % d)

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        鉴于您正在使用 Numpy,我建议您看看 Pandas。该包具有与其 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)
        

        【讨论】:

          【解决方案5】:

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

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

          如果它是一个 .txt 文件,您应该阅读:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-12-29
            • 1970-01-01
            • 2018-09-18
            • 1970-01-01
            • 1970-01-01
            • 2021-01-26
            • 1970-01-01
            相关资源
            最近更新 更多