如何在现代Python中向文件写入一行?我听说这是不赞成的:

print >>f, "hi there"

另外,“\n”在所有平台上都可以工作吗,还是我应该在Windows上使用“\r\n”?


当前回答

当你说行,它是指一些以“\n”字符结尾的序列化字符。行应该在最后一点,所以我们应该在每行的末尾考虑'\n'。下面是解决方案:

with open('YOURFILE.txt', 'a') as the_file:
    the_file.write("Hello")

在追加模式下,每次写入后光标移动到新行,如果你想使用w模式,你应该在write()函数的末尾添加\n个字符:

the_file.write("Hello\n")

其他回答

python文档推荐这样做:

with open('file_to_write', 'w') as f:
    f.write('file contents\n')

所以这是我通常做的方式:)

docs.python.org声明:

在处理文件时使用'with'关键字是一个很好的实践 对象。这样做的好处是文件在关闭后被正确关闭 它的套件结束了,即使在此过程中引发了异常。它是 也比编写等价的try-finally块要短得多。

你也可以试试文件编辑器

PIP安装文件写入器

from filewriter import Writer

Writer(filename='my_file', ext='txt') << ["row 1 hi there", "row 2"]

写入my_file.txt

接受一个可迭代对象或具有__str__支持的对象。

这应该非常简单:

with open('somefile.txt', 'a') as the_file:
    the_file.write('Hello\n')

来自文档:

不要使用os。当写入以文本模式打开的文件时(默认),Linesep作为行结束符;在所有平台上使用单个“\n”。

一些有用的阅读:

with语句 open () “a”是“追加”或“使用” 'w'表示截断 操作系统(特别是OS .linesep)

如果你想在列表中以每行格式插入项目,一种开始的方式可以是:

with open('somefile.txt', 'a') as the_file:
    for item in items:
        the_file.write(f"{item}\n")

如果您希望避免使用write()或writelines()并自己用换行符连接字符串,则可以将所有行传递给print(),并将换行分隔符和文件句柄作为关键字参数。这个代码片段假设字符串没有结尾换行符。

print(line1, line2, sep="\n", file=f)

你不需要在结尾放一个特殊的换行符,因为print()为你做了。

如果列表中有任意数量的行,可以使用列表展开将它们全部传递给print()。

lines = ["The Quick Brown Fox", "Lorem Ipsum"]
print(*lines, sep="\n", file=f)

在Windows上使用“\n”作为分隔符是可以的,因为print()也会自动将其转换为Windows CRLF换行符(“\r\n”)。