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任何协助。
答案 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
块的末尾自动关闭with
(flush()
无论如何都是多余的。)