Linux命令在cmd

时间:2016-04-19 13:26:43

标签: python

请告诉我以下代码有什么问题:

def ume():
    cmd = None
    p = r'/myfolder/xyz'
    cmd = ["who am i | awk '{print $1}'", "date"]
    fh = open(p, 'ab+')
    try:
       b = subprocess.Popen(cmd, shell=True, universal_newlines=True, stdout=fh)
       b.wait()
       fh.flush()
    finally:
       fh.close()

ume()

它在date文件中没有附加xyz输出。只是给出这个命令的输出:

  

(我是谁| awk'{print $ 1}'

我希望两个命令的o / p都应该用单行写入,如下所示。

mmd星期二4月19日13:25:35 UTC 2016

1 个答案:

答案 0 :(得分:0)

如果默认shell为bash,则可以尝试以下代码:

def ume():
    cmd = None
    p = r'temp.txt'
    cmd = ["export wai=`whoami | awk '{print $1}'`;" "export dt=`date`;" "echo $wai $dt"]
    fh = open(p, 'ab+')
    try:
       b = subprocess.Popen(cmd, shell=True, universal_newlines=True, stdout=fh)
       b.wait()
       fh.flush()
    finally:
       fh.close()
ume()