19

我正在尝试执行简单的命令将 hello world 写入文件:

50 complexity:test% python2.7
Python 2.7.3 (default, Feb 11 2013, 12:48:32)
[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f=open("/export/home/vignesh/resres.txt","w")
>>> f.write("hello world")
>>> f.write("\t".join(["hello","world"]))

这将返回一个空文件。

4

2 回答 2

25

Python 不会在每个write. 您要么需要手动刷新它flush

>>> f.flush()

或自己关闭它close

>>> f.close()

在实际程序中使用文件时,建议使用with

with open('some file.txt', 'w') as f:
    f.write('some text')
    # ...

这确保文件将被关闭,即使抛出异常也是如此。但是,如果您想在 REPL 中工作,您可能希望坚持手动关闭它,因为它会with在尝试执行它之前尝试阅读全部内容。

于 2013-08-04T23:40:50.950 回答
7

您需要关闭文件:

>>> f.close()

另外,我建议在with打开文件时使用关键字:

with open("/export/home/vignesh/resres.txt","w") as f:
    f.write("hello world") 
    f.write("\t".join(["hello","world"]))

它会自动为您关闭它们。

于 2013-08-04T23:40:45.550 回答