【问题标题】:Appending to file using savetxt使用 savetxt 附加到文件
【发布时间】:2019-01-25 08:30:32
【问题描述】:

我正在尝试将数组 b 和 c 附加到 file.txt。默认行为是覆盖,我找不到任何关于更改它的文档。

import numpy as np
a = np.array([1.2, 2.3, 4.5])
b = np.array([6.7, 8.9, 10.11])
c = np.array([12.13, 14.15, 16.17])

np.savetxt('file.txt', a, fmt='%1.3f', newline=", ")

谢谢

【问题讨论】:

  • 文档说fname 可以是“文件名或文件句柄”。句柄意味着一个打开的文件。请记住,重复写入 csv 会使读取该文件变得更加复杂。

标签: python numpy


【解决方案1】:

open() 与“附加”模式一起使用,并将流传递给savetxt 方法:

with open("test.txt", "ab") as f:
    numpy.savetxt(f, a)

编辑:添加新行或其他:

with open("test.txt", "ab") as f:
    f.write(b"\n")
    numpy.savetxt(f, a)

【讨论】:

  • 当我运行它时,我得到 f.write("\n") 行的 TypeError
  • 是的对不起:那是因为二进制模式,字符串应该以二进制格式添加。我会编辑答案
【解决方案2】:

您应该以附加模式打开文件

import numpy as np        
f=open('file.txt','a')
a = np.array([1.2, 2.3, 4.5])
b = np.array([6.7, 8.9, 10.11])
c = np.array([12.13, 14.15, 16.17])
np.savetxt(f, a, fmt='%1.3f', newline=", ")
f.write("\n")
np.savetxt(f, b, fmt='%1.3f', newline=", ")
f.write("\n")
np.savetxt(f, c, fmt='%1.3f', newline=", ")
f.write("\n")
f.close()

【讨论】:

  • 谢谢!那行得通。如何在每行之间添加换行符?
  • 这不是解决方案的二进制关键字 ('b'),而是附加的 'a'。
  • 是的,我的错,我测试的有点太快了。
  • II 修改它以添加新行
  • 较旧的 numpy 版本需要 b 文件,因为它们试图保持与 PY2 的兼容性。现在savetxt 对文本模式同样满意,'w'、'a'、'wt' 等。但是您自己的行写入必须使用兼容的字符串。
猜你喜欢
  • 2019-03-18
  • 2013-07-05
  • 1970-01-01
  • 2020-12-10
  • 1970-01-01
  • 2014-05-09
  • 1970-01-01
  • 2011-01-14
相关资源
最近更新 更多