os命令没有写入文件

时间:2016-04-18 18:48:11

标签: python

我的代码如下:

 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

1 个答案:

答案 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()