gpt4 book ai didi

python - 从终端捕获结果(外部进程)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:59:38 24 4
gpt4 key购买 nike

我需要从终端获取结果

mask = "audio"
a = os.system("ls -l | grep %s | awk '{ print $9 }'" % mask)
print a # a = 0, that's the exit code

#=>
file1_audio
file2_audio
0

这个命令只是将结果打印到控制台,而我想将它捕获到一个变量。

最佳答案

使用 subprocess模块

import subprocess

p = subprocess.Popen("ls -l | grep %s | awk '{ print $9 }'" % mask,
shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()

shell=True 是必需的,因为管道由 shell 运行,否则您会得到一个没有这样的文件或目录

在 Python 2.7 中你也可以使用

output = subprocess.check_output(
"ls -l | grep %s | awk '{ print $9 }'" % mask
stderr=subprocess.STDOUT,
shell=True)

但我发现使用起来很麻烦,因为如果管道返回 0 以外的退出代码,它会抛出 subprocess.CalledProcessError,并且要同时捕获 stdout 和 stderr,您需要将它们交错放置,这使得它在许多情况下不可用。

关于python - 从终端捕获结果(外部进程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18284232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com