档案没有关闭

时间:2012-02-05 09:03:06

标签: python

windows 7,python 2.7.2

以下运行没有错误:

from subprocess import call

f = open("file1","w")
f.writelines("sigh")
f.flush
f.close
call("copy file1 + file2 file3", shell=True)

但是,file3仅包含file2的内容。 file1和file2名称都按照Windows的正常情况进行回显,但是,在调用副本时,file1似乎为空。好像file1还没有被完全写入和刷新。如果file1是单独创建的,而不是在同一个python文件中,则以下按预期运行:

from subprocess import call
call("copy file1 + file2 file3", shell=True)

对不起,如果要在这里指责python newbieness。很多thx任何协助。

1 个答案:

答案 0 :(得分:7)

你错过了括号:

f.flush()
f.close()

您的代码在语法上有效,但不会调用这两个函数。

编写该序列的更多Pythonic方法是:

with open("file1","w") as f:
    f.write("sigh\n") # don't use writelines() for one lonely string 
call("copy file1 + file2 file3", shell=True)

这将在f块的末尾自动关闭withflush()无论如何都是多余的。)