2017-07-20 37 views
1

我正在使用python中的numpy数组。我想打印数组及其属性到一个txt输出。我希望文本输出以空行结束。我怎样才能做到这一点?在文件的末尾写入新行

我曾尝试:

# Create a text document of the output 
with open("demo_numpy.txt","w") as text: 
    text.write('\n'.join(map(str, [a,shape,size,itemsize,ndim,dtype])) + '\n') 

而且也:

# Create a text document of the output 
with open("demo_numpy.txt","w") as text: 
    text.write('\n'.join(map(str, [a,shape,size,itemsize,ndim,dtype]))) 
    text.write('\n') 

然而,当我打开GitHub上桌面的文件,我仍然得到指示该文件的最后一行是“ dtype“

+0

在适当的编辑器中打开你的文件,你会看到文件末尾有一个新行(除非你的GitHub处理程序在提交它之前不自动删除尾随空白)。 – zwer

+0

谢谢,@zwer我查了一下,我相信GitHub删除了尾部的空白,这就是为什么我不能看到换行符,但我相信它在那里。问题是 - 我怎样才能在正确的文本编辑器中看到空行? – zsad512

+1

通常,编辑器的光标将能够移动到新行,并且如果它支持显示行号 - 它也会显示新行的行号。 – zwer

回答

0

这是使用Python 3.x打印函数解决的,该函数会在每个打印语句的末尾自动插入新行。

下面是代码:

with open("demo_numpy.txt","w") as text:  
    print(a, file = text) 
    text.close() 
  • 注意 - 显然是比较合适的字符串值打交道时,而不是二进制文件使用print功能,而不是.write
2

当你做"\n".join(...)你会得到一个如下形式的字符串:

abc\ndef\nghi\nhjk 

- 换句话说,它不会以\n结束。

如果您的代码写入另一个\n那么你的字符串将是形式

abc\ndef\nghi\nhjk\n 

,但不把一个空行,在文件的结尾,因为TEXTFILES应该有在\n结尾的行。这就是Posix标准所说的。

所以你需要另一\n让你的文件的最后两行是

hjk\n 
\n 

,如果你问它来读取一个文本,其中最终尾随\n缺少Python会不会窒息。但它也不会将文本文件中的单个尾随\n视为空行。我不知道GitHub也这么做。

+0

因此我在我的问题中发布的第一条代码行不正确?我是否需要添加另一个'\ n'?我认为第一个代码实际上起作用,它只是一个删除尾部空白的GitHub问题。 – zsad512

+0

我认为你的代码的两个版本都做同样的事情。两个版本都会写入一个文件,以单个'\ n'结尾。根据Posix规则,这不是,指定一个空白行,因为尾部的'\ n'终止最后一行。你需要第二个'\ n'来终止你想要的空行。我拒绝相信GitHub删除尾随空白。你不需要听我的话。只需放入另一个'\ n'并尝试。这会比我写这个要花费更少的击键。 – BoarGules