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

3
我尝试的代码是:
dtf = open("C:\\Users\\foggi\\Documents\\Fred.txt","w")
dtf.write("Hello people")

这在安卓上是可行的(需要更改文件路径),但在Windows 10下会创建一个空文件。我该怎么解决?

5个回答

3

在写完文件后,必须关闭它。

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

或者,更好的做法是:
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/(第一个谷歌搜索结果)。


非常感谢。那个完美地运行了。顺便说一下,在我的原始测试中我确实关闭了文件,只是忘记发布“dtf.close”! - JohnOfStony

3
文件为空的原因是在打开文件前没有关闭该文件对象。
通常建议使用 with 来打开文件,因为它会在幕后自动关闭文件对象。
with open("C:\\Users\\foggi\\Documents\\Fred.txt","w") as f:
    f.write("Hello people")

2

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

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

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

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

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

2
在理论上,当文件的终结器运行时,文件应该会被关闭,但这并不是一定会发生的。你需要关闭文件以将其缓冲区刷新到磁盘上,否则你所“写入”的数据可能会停留在Python脚本的内存中。
确保文件被关闭的最佳方法是使用一个with块。
with open("C:\\Users\\foggi\\Documents\\Fred.txt", "w") as fp:
    fp.write("Hello people")

另一个好的方法是只使用 pathlib

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

你也可以手动关闭文件,但这不推荐做法,因为这并不符合风格要求:

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

原因是在openclose之间可能发生某些事情,导致close被跳过。在这样一个简短的程序中,这并不重要,但在更大的程序中,可能会出现文件句柄泄漏,因此建议到处使用with


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

你可以将这个 a+ 用作替代


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