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

print >>f, "hi there"

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


当前回答

在烧瓶文件中写入文本可以使用:

filehandle = open("text.txt", "w")
filebuffer = ["hi","welcome","yes yes welcome"]
filehandle.writelines(filebuffer)
filehandle.close()

其他回答

在烧瓶文件中写入文本可以使用:

filehandle = open("text.txt", "w")
filebuffer = ["hi","welcome","yes yes welcome"]
filehandle.writelines(filebuffer)
filehandle.close()

python文档推荐这样做:

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

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

docs.python.org声明:

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

这应该非常简单:

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

来自文档:

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

一些有用的阅读:

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

关于os.linesep:

下面是一个在Windows上精确的未经编辑的Python 2.7.1解释器会话:

Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.linesep
'\r\n'
>>> f = open('myfile','w')
>>> f.write('hi there\n')
>>> f.write('hi there' + os.linesep) # same result as previous line ?????????
>>> f.close()
>>> open('myfile', 'rb').read()
'hi there\r\nhi there\r\r\n'
>>>

在Windows上:

不出所料,os。linesep不会产生与'\n'相同的结果。它不可能产生同样的结果。'hi there' + os。linesep等价于'hi there\r\n',它并不等价于'hi there\n'。

很简单:使用\n,它会自动转换为os.linesep。自从第一次将Python移植到Windows以来,就一直如此简单。

使用os没有任何意义。linesep在非Windows系统上,它在Windows上产生错误的结果。

不要使用os.linesep!

在Python 3中,它是一个函数,但在Python 2中,你可以将它添加到源文件的顶部:

from __future__ import print_function

然后你做了

print("hi there", file=f)