在python的子进程中调用多引号的unix命令

时间:2015-02-26 03:39:06

标签: python unix

如何使用子进程调用诸如df -Ph | awk 'NR>=2 {print $6","$5","$4}'之类的unix命令。在这里使用shlex.split会有意义吗?

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您正在使用管道,因此需要在shell中运行。所以只需使用字符串形式,并确保指定shell=True。至于报价,最简单的方法是在这里使用三重报价:

cmd = """df -Ph | awk 'NR>=2 {print $6","$5","$4}'"""

答案 1 :(得分:1)

通过设置subprocess

,让shell=True将其传递给shell
subprocess.call('''df -Ph | awk 'NR>=2 {print $6","$5","$4}'''', shell=True)

答案 2 :(得分:0)

嗨,你也可以这样做。不要忘记导入子流程

import subprocess
def linuxOperation():
 p = subprocess.Popen(["df","-Ph"], stdout=subprocess.PIPE)
 p2 = subprocess.Popen(["awk",'NR>=2 {print $6","$5","$4}'], stdin=p.stdout, stdout=subprocess.PIPE, universal_newlines=True)
 p.stdout.close()
 out,err = p2.communicate()
 print(out)


 linuxOperation()