在 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()
如何使用子进程调用 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()