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的内容。和Windows一样,文件1和文件2的名称都会被回显,但是,调用副本时文件1似乎为空。似乎file1尚未完全写入并清除。如果file1是单独创建的,而不是在同一python文件中创建的,则将按预期运行以下命令:
from subprocess import call
call("copy file1 + file2 file3", shell=True)
对不起,如果在这里怪怪python newbieness。许多帮助。
最佳答案
您缺少括号:
f.flush()
f.close()
您的代码在语法上是有效的,但不会调用这两个函数。
编写该序列的更Python方式是:
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()
仍然是多余的)。关于python - 文件未关闭,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9148106/