如何使用Python 3将文本写入Windows 10中的文件

How can I use Python 3 to write text to a file in Windows 10

我尝试过的代码是:

1
2
dtf = open("C:\\Users\\foggi\\Documents\\Fred.txt","w")
dtf.write("Hello people")

这在Android上很好地工作(对文件路径进行适当的更改),但在Windows10下,它会创建一个空文件。我怎样才能克服这个问题?


文件为空的原因是您在打开文件对象之前没有将其关闭。

建议在大多数情况下使用with打开文件,因为它会在场景后面为您关闭文件对象:

1
2
with open("C:\\Users\\foggi\\Documents\\Fred.txt","w") as f:
    f.write("Hello people")


理论上,文件应该在运行终结器时关闭,但这并不能保证会发生。您需要关闭该文件以将其缓冲区刷新到磁盘,否则您"写入"的数据可能会挂在您的Python脚本的内存中。

确保关闭文件的最佳方法是使用with块。

1
2
with open("C:\\Users\\foggi\\Documents\\Fred.txt","w") as fp:
    fp.write("Hello people")

另一个好方法是只使用pathlib

1
2
3
import pathlib
path = pathlib.Path("C:\\Users\\foggi\\Documents\\Fred.txt")
path.write_text("Hello people")

您也可以手动关闭该文件,但不建议将其作为样式:

1
2
3
fp = open("C:\\Users\\foggi\\Documents\\Fred.txt","w")
fp.write("Hello people")
fp.close()

原因是,openclose之间可能会发生一些事情,导致close被跳过。在如此短的程序中,这并不重要,但在较大的程序中,最终可能会泄漏文件句柄,因此建议在任何地方都使用with


在完成对文件的写入之后,必须关闭该文件。

1
2
3
dtf = open("C:\\Users\\foggi\\Documents\\Fred.txt","w")
dtf.write("Hello people")
dtf.close()

或者,最好是:

1
2
with open("C:\\Users\\foggi\\Documents\\Fred.txt","w") as dtf:
    dtf.write("Hello people")

您可以阅读更多关于with块的信息,包括如何创建自己的对象,这些对象可以与with一起使用,这里是:http://preshing.com/20110920/the-python-with-statement-by-example/(第一个谷歌结果)。


如果要查看更改,则需要关闭文件:

我总是使用with,它在块结束时关闭文件。

1
2
with open("C:\\Users\\foggi\\Documents\\Fred.txt","w") as fs:
    fs.write("Hello people")

或者在写完后关闭文件。使用file.close()

1
2
3
dtf = open("C:\\Users\\foggi\\Documents\\Fred.txt","w")
dtf.write("Hello people")
dtf.close()


1
2
dtf = open("C:\\Users\\foggi\\Documents\\Fred.txt","a+")
dtf.write("Hello people")

你可以用这个A+来改变