在python中调用多引号unix命令';s子流程

在python中调用多引号unix命令';s子流程,python,unix,Python,Unix,如何使用子进程调用unix命令,例如df-Ph | awk'NR>=2{print$6“,“$5”,“$4}”。在这里使用shlex.split有意义吗 谢谢您的帮助。您使用的是管道,因此需要在外壳中运行。因此,只需使用字符串形式,并确保指定shell=True。至于报价,这里最容易使用三重报价: cmd = """df -Ph | awk 'NR>=2 {print $6","$5","$4}'""" 只需设置shell=True,让子流程将其传递给shell即可: subproces

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


谢谢您的帮助。

您使用的是管道,因此需要在外壳中运行。因此,只需使用字符串形式,并确保指定
shell=True
。至于报价,这里最容易使用三重报价:

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

只需设置
shell=True,让
子流程
将其传递给shell即可:

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

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

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

工作。非常感谢。使用三重双引号-如Kindalls解决方案所示-而不是单引号。谢谢你的回复。