运行包含管道的命令行并将结果显示到STDOUT
发布于 2021-01-29 18:40:19
一个人如何从Python调用一个包含管道的shell命令并捕获输出?
假设命令是这样的:
cat file.log | tail -1
我想要做的与Perl相当的东西是这样的:
my $string = `cat file.log | tail -1`;
关注者
0
被浏览
47
1 个回答
-
使用subprocess.PIPE,如子流程文档部分“替换外壳管道”中所述:
import subprocess p1 = subprocess.Popen(["cat", "file.log"], stdout=subprocess.PIPE) p2 = subprocess.Popen(["tail", "-1"], stdin=p1.stdout, stdout=subprocess.PIPE) p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits. output,err = p2.communicate()
import sh output = sh.tail(sh.cat('file.log'), '-1')