从python脚本将命令传递给应用程序CLI

时间:2013-08-08 10:21:03

标签: python

要从python脚本运行shell命令,我通常使用subprocessos.system模块。

使用它我从python脚本运行一些shell命令,它启动另一个应用程序,该应用程序也有命令行界面。

  1. 如何从我的python脚本向该应用程序CLI传递命令?
  2. 如何从python脚本中捕获应用程序CLI的输出?
  3. 如果有人可以提供材料或示例代码,我们将不胜感激。

1 个答案:

答案 0 :(得分:2)

启动的应用程序在运行子进程时可能会有不同的行为。具体来说,当连接到流程管道时,某些应用程序默认缓冲其输出而不是逐行刷新。如果您正在运行的应用程序刷新其输出,您可以实时获取它,否则,只有在缓冲区已满时才会输出。

那就是说,这是一个运行某些应用程序的例子:

p = subprocess.Popen(['someapp', 'param1', 'param2'], 
        stdin=subprocess.PIPE, stdout=subprocess.PIPE,)

# sends the command "some_command" to the app:
p.stdin.write('some_command\n') 

# waits for a single line from the output
result = p.stdout.readline() 

如果它挂在p.stdout.readline()上,则表示输出正在缓冲。