如何使用子进程调用诸如df -Ph | awk 'NR>=2 {print $6","$5","$4}'
之类的unix命令。在这里使用shlex.split会有意义吗?
感谢您的帮助。
答案 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()