如何从Python程序中从命令行获取数据?

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是可选的,可以删除.

  • 'module'对象没有属性'IGNORE' (7认同)
  • ...其中`command`应该是`['foo','file1','file2',...]`.+1. (2认同)

jos*_*nix 5

获取通过Python脚本调用的工具的输出的最简单方法是使用标准库中的subprocess模块。看看subprocess.check_output

>>> subprocess.check_output("echo \"foo\"", shell=True)
'foo\n'
Run Code Online (Sandbox Code Playgroud)

(如果您的工具从不受信任的来源获取输入,请确保不要使用该shell=True参数。)