如何从python脚本以交互方式运行其他程序

时间:2015-11-09 17:08:34

标签: python

我是python的新手。我想以交互方式从python运行“EDA工具”。 以下是我想要遵循的步骤:

  1. 启动工具
  2. 运行工具中的第一个命令
  3. 检查第一个命令输出或解析(在主pyton中)脚本
  4. 运行第二个命令
  5. 解析python脚本中的输出
  6. [...]

    x。退出工具

    x + 1。在主pyhon脚本中进行一些后期处理

    我正在寻找与之相关的一些信息或指示,以便我可以自己阅读。

2 个答案:

答案 0 :(得分:1)

这取决于"命令"的含义。每个命令是一个单独的进程(在该单词的操作系统定义中)吗?如果是这样,听起来你需要subprocess模块。

import subprocess
execNamePlusArgs = [ 'ls', '-l' ] # unix-like (i.e. non-Windows) example
sp = subprocess.Popen( execNamePlusArgs, stdout=subprocess.PIPE, stderr=subprocess.PIPE )
stdout, stderr = sp.communicate() # this blocks until the process terminates
print( stdout )

如果您不希望它在终止前阻止(例如,如果您想要逐行输入子进程并逐行检查其输出),那么您还要定义stdin=subprocess.PIPE然后,您可以使用对communicatesp.stdin.writeline(whatever)sp.stdout.readline()

的调用,而不是sp.stderr.readline()

答案 1 :(得分:0)

您应该考虑使用类似python-fabric之类的内容 它允许您使用更高级别的语言结构,例如上下文管理器,并使shell更适用于python。

使用示例:

from fabric.operations import local
from fabric.context_managers import lcd

with lcd(".."): # Prefix all commands with 'cd.. &&'
    ls = local('ls',capture=True) # Run 'ls' command and put result into variable
    print ls

>>> 
[localhost] local: ls
Eigene Bilder
Eigene Musik
Eigene Videos
SynKernelDiag2015-11-07_10-01-13.log
desktop.ini
foo
scripts