Python 3.x 在Python3中将数组行追加到.txt文件

Python 3.x 在Python3中将数组行追加到.txt文件,python-3.x,numpy,append,newline,Python 3.x,Numpy,Append,Newline,我只是想把我的11列单行值放入一个文本文件中,我可以在其中添加新行。我已经习惯了Python2.7,我不明白为什么我的np.savetxt的行为与以前不一样 我知道这将创建我的文本文件,而不会出现任何类型错误: with open("testtext.txt", "wb") as myfile: np.savetxt(myfile, mydata, fmt="%.5f", delimiter=' ', newline=' ') 但是,当我运行代码以接收需要追加的新数据时,我将其更改为:

我只是想把我的11列单行值放入一个文本文件中,我可以在其中添加新行。我已经习惯了Python2.7,我不明白为什么我的
np.savetxt
的行为与以前不一样

我知道这将创建我的文本文件,而不会出现任何类型错误:

with open("testtext.txt", "wb") as myfile:
    np.savetxt(myfile, mydata, fmt="%.5f", delimiter=' ', newline=' ')
但是,当我运行代码以接收需要追加的新数据时,我将其更改为:

with open("testtext.txt", "ab") as myfile:
    np.savetxt(myfile, mynewdata, fmt="%.5f", delimiter=' ', newline=' ')

它不会将
mynewdata
放入新行。我已将
\n
输入到换行符中,我尝试了
'
而不是
'
,我尝试了
\r\n
,但这是一个漫长的过程。。请帮忙,我觉得这应该是件简单的事情。谢谢。

再次检查您的问题,因此,如果您的新数组(行)不是在新行中开始的,则应该是文本文件的最后一行没有以换行结束。正如@hpaulj所指出的,这应该是可行的:

with open("testtext.txt", "wb") as myfile:
    f.write(b'\n')
    ...

如果在windows上运行,请使用“\r\n”而不是“\n”。

如果使用典型分隔符保存1d数组,并且没有特殊换行符,则每行保存一个值:

In [548]: with open('test.txt','wb') as f:
     ...:     np.savetxt(f, np.arange(3), fmt='%5d', delimiter=',')   
In [549]: cat test.txt
    0
    1
    2
使用“”换行符,将它们放在一行上-但结束文件时不带
\n

In [550]: with open('test.txt','wb') as f:
     ...:     np.savetxt(f, np.arange(3), fmt='%5d', delimiter=',', newline='')

In [552]: cat test.txt
    0    1    2In [553]: 
下一次追加将在该行上继续

我可以包含一个
b'\n'
write。这需要是一个bytestring nl。(
np.savetxt
自由地使用了
np.lib.npyio.asbytes

或者我应该养成一个习惯,在这样一个
savetxt
的末尾添加一个
\n
write

或者,我可以确保在文件中写入一个2d数组,即使我只想写入一行。将数组包装到列表中就可以了。想象一下
savetxt
在输入的“行”(第一维)上迭代,一次写入一行(使用
fmt
格式、分隔符和换行符)


谢谢@Will,这很有效,我确实需要使用“\r\n”!
In [557]: with open('test.txt','ab') as f:
     ...:     f.write(b'\n')
     ...:     np.savetxt(f, np.arange(3), fmt='%5d', delimiter=',', newline='')

In [558]: cat test.txt
    0    1    2
    0    1    2In [559]: 
In [559]: with open('test.txt','wb') as f:
     ...:     np.savetxt(f, [np.arange(3)], fmt='%5d', delimiter=',')

In [560]: cat test.txt
    0,    1,    2

In [561]: with open('test.txt','ab') as f:
     ...:     np.savetxt(f, [np.arange(4)], fmt='%5d', delimiter=',')

In [562]: cat test.txt
    0,    1,    2
    0,    1,    2,    3