use*_*492 24 python command-line pipe
我想从python脚本中运行命令行程序并获取输出.
如何获取foo显示的信息,以便我可以在脚本中使用它?
例如,我foo file1
从命令行调用它打印出来
Size: 3KB
Name: file1.txt
Other stuff: blah
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到类似的文件名filename = os.system('foo file1')
?
kob*_*las 24
使用子进程模块:
import subprocess
command = ['ls', '-l']
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.IGNORE)
text = p.stdout.read()
retcode = p.wait()
Run Code Online (Sandbox Code Playgroud)
然后你可以用变量做任何你想做的事text
:正则表达式,分裂等.
第二个和第三个参数subprocess.Popen
是可选的,可以删除.
获取通过Python脚本调用的工具的输出的最简单方法是使用标准库中的subprocess模块。看看subprocess.check_output。
>>> subprocess.check_output("echo \"foo\"", shell=True)
'foo\n'
Run Code Online (Sandbox Code Playgroud)
(如果您的工具从不受信任的来源获取输入,请确保不要使用该shell=True
参数。)