我想执行linux命令cksum,将其管道切割以提取第一个字段: cksum test_file.txt | cut -d'' - f -1 但Python无法识别PIPE符号“|”
from subprocess import Popen, PIPE
output =
Popen(["cksum", "test_file.txt", "| cut -d ' ' -f 1"],stdout=PIPE).communicate()[0]
print output
MacBook-Pro:prompt$ python cut_output.py
cksum: | cut -d ' ' -f 1: No such file or directory
3691605422 51 test_file.txt
MacBook-Pro:prompt$
任何建议都表示赞赏。
答案 0 :(得分:0)
添加`shell = True'。但是,建议不要这样做,因为如果Popen命令使用用户输入,它可能是一个主要的安全风险。有关风险here
的更多信息output = Popen(["cksum", "test_file.txt", "| cut -d ' ' -f 1"],shell=True,stdout=PIPE).communicate()[0]