0

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

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

  1. 如何从我的 python 脚本向该应用程序 CLI 传递命令?
  2. 如何从我的 python 脚本中捕获应用程序 CLI 的输出?

如果有人可以建议材料或示例代码,我们将不胜感激。

4

1 回答 1

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(),则表示正在缓冲输出。

于 2013-08-08T10:28:07.193 回答