在文件末尾写入新行

3

我在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"的提示。


在适当的编辑器中打开您的文件,您会发现文件末尾有一个新行(除非您的 GitHub 处理程序在提交之前不会自动删除尾随空格)。 - zwer
谢谢,@zwer。我查了一下,我相信GitHub会删除尾随的空格,这就是为什么我看不到换行符的原因-但我相信它确实存在。问题是-无论如何,我怎样才能在一个合适的文本编辑器中看到一个空白行呢? - zsad512
1
通常情况下,编辑器的光标可以移动到新行,如果它支持显示行号,则还会显示新行的行号。 - zwer
2个回答

3
当您执行"\n".join( ... )时,您将获得以下形式的字符串:
abc\ndef\nghi\nhjk

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

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

abc\ndef\nghi\nhjk\n

但是这并不会在文件末尾留下一个空行,因为文本文件应该以\n结尾。这是Posix标准规定的。
所以你需要再加一个\n,这样你文件的最后两行就是:
hjk\n
\n

如果你让Python读取一个文本文件,但末尾缺少\n,它不会出错。但是,它也不会将文本文件中单个的\n视为空行。我不会感到惊讶如果GitHub也是如此。


我在问题中发布的第一行代码是不正确的吗?我需要添加另一个 '\n' 吗?我认为第一行代码实际上是有效的,只是 GitHub 的问题会删除尾随空格。 - zsad512
我认为你的代码两个版本做的事情基本相同。两个版本都会写入以单个\n结尾的文件。根据Posix规则,这并不表示空行,因为尾随的\n终止了最后一行。你需要第二个\n来终止你想要的空行。我拒绝相信GitHub会删除尾随的空格。你不必相信我的话。只需再加一个\n并尝试一下。这比我写这段话用的按键次数还少。 - BoarGules

1

这个问题可以使用Python 3.x的print函数来解决,该函数会自动在每个打印语句的末尾插入一个新行。

以下是代码:

with open("demo_numpy.txt","w") as text:    
    print(a, file = text)
    text.close()

注意-在处理字符串值而不是二进制文件时,使用print函数而不是.write似乎更合适。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接