Numpy savetxt配合with open使用时无法追加写入反而覆盖文件问题
问题原因
你的with open写法存在传参错误,两段代码逻辑本质上根本不一致:
- 能正常追加的写法中,你把
open()返回的、以追加模式'a'打开的文件对象f直接传给了np.savetxt,numpy会直接向这个已打开的文件句柄写入内容,完全遵循你设置的追加模式,不会覆盖原有文件。 - 覆盖文件的
with写法中,你虽然用追加模式打开了文件拿到了句柄f,但调用np.savetxt时传入的第一个参数是文件名字符串'testfile.o',根本没有用到已经打开的f。这种情况下numpy会自行重新打开目标文件,默认使用'w'覆盖写入模式,你在with open里设置的追加模式、编码参数完全没有生效,自然会清空原有内容。
修正后的正确写法
import numpy as np Array = np.array([[1,2,3],[4,5,6],[7,8,9]]) with open('testfile.o', 'a', encoding="utf-8") as f: np.savetxt(f, Array, fmt='%4.2f\n')
注:你最初给出的数组定义代码末尾缺少右括号,直接运行会触发语法错误,补上即可。
内容的提问来源于stack exchange,提问作者agnuke
相关产品推荐
相关产品推荐

