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

Call multi-quoted unix command in python's subprocess

如何使用子进程调用 df -Ph | awk 'NR>=2 {print ","","}' 等 unix 命令。在这里使用 shlex.split 有意义吗?

在此感谢您的帮助。

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

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

通过设置 shell=True:

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

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

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


 linuxOperation()