如何在现代Python中向文件写入一行?我听说这是不赞成的:
print >>f, "hi there"
另外,“\n”在所有平台上都可以工作吗,还是我应该在Windows上使用“\r\n”?
如何在现代Python中向文件写入一行?我听说这是不赞成的:
print >>f, "hi there"
另外,“\n”在所有平台上都可以工作吗,还是我应该在Windows上使用“\r\n”?
当前回答
python文档推荐这样做:
with open('file_to_write', 'w') as f:
f.write('file contents\n')
所以这是我通常做的方式:)
docs.python.org声明:
在处理文件时使用'with'关键字是一个很好的实践 对象。这样做的好处是文件在关闭后被正确关闭 它的套件结束了,即使在此过程中引发了异常。它是 也比编写等价的try-finally块要短得多。
其他回答
在Python 3中,它是一个函数,但在Python 2中,你可以将它添加到源文件的顶部:
from __future__ import print_function
然后你做了
print("hi there", file=f)
如果您希望避免使用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”)。
当你说行,它是指一些以“\n”字符结尾的序列化字符。行应该在最后一点,所以我们应该在每行的末尾考虑'\n'。下面是解决方案:
with open('YOURFILE.txt', 'a') as the_file:
the_file.write("Hello")
在追加模式下,每次写入后光标移动到新行,如果你想使用w模式,你应该在write()函数的末尾添加\n个字符:
the_file.write("Hello\n")
在烧瓶文件中写入文本可以使用:
filehandle = open("text.txt", "w")
filebuffer = ["hi","welcome","yes yes welcome"]
filehandle.writelines(filebuffer)
filehandle.close()
当我需要大量编写新行时,我定义了一个使用print函数的lambda:
out = open(file_name, 'w')
fwl = lambda *x, **y: print(*x, **y, file=out) # FileWriteLine
fwl('Hi')
这种方法的好处是它可以利用打印函数的所有可用特性。
更新:正如Georgy在评论区提到的,可以通过partial函数进一步改进这个想法:
from functools import partial
fwl = partial(print, file=out)
恕我直言,这是一种更实用、更简单的方法。