从子进程stdout关闭文件

时间:2015-08-13 05:52:14

标签: python subprocess

这是我的代码

fh = open("temp.txt", "w") 
process = subprocess.Popen(["test"], shell=True, stdout=fh)

如果进程没有退出,是否需要释放文件句柄或者杀死子进程就足够了?

1 个答案:

答案 0 :(得分:2)

您的文件对象是由Python代码打开的,不会被子进程关闭。确保它正确关闭是你的责任。

您可以使用(不是最佳选择):

fh = open("temp.txt", "w") 
process = subprocess.Popen(["test"], shell=True, stdout=fh)
fh.close()

或(更好):

with open("temp.txt", "w") as fh:
    process = subprocess.Popen(["test"], shell=True, stdout=fh)

后者将确保您的文件对象始终正确关闭,即使子进程命令失败并出现一些错误。