我的代码如下:
import os, subprocess
def cfile():
p = r'/mypath/abc'
cmd = ["who am i | awk '{print $1}'"]
if not os.path.exists(p):
fh = open(p, 'a')
try:
subprocess.Popen(cmd, stdout=fh)
finally:
fh.close()
cfile()
上面的代码创建了一个名为'folder'的文件,但没有写任何东西。能帮助我了解这里有什么问题吗?我正在使用python 2.7
答案 0 :(得分:0)
你可以在每个Popen对象上调用.wait()以确保它已经完成然后调用flush()。也许是这样的:
import os
import subprocess
def cfile():
p = r'/mypath/abc'
cmd = ["who am i | awk '{print $1}'"]
fh = open(p, 'a+')
try:
sb = subprocess.Popen(cmd, shell=True, universal_newlines=True, stdout=fh)
sb.wait()
fh.flush()
finally:
fh.close()
cfile()