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/

10-12 20:35