通过python运行命令行程序

时间:2014-05-19 08:35:56

标签: python command-line

我试图通过python运行一个程序(可以完全通过命令行运行)。

程序将运行并等待输入。

我可以手动输入输入,但我试图通过python脚本输入输入来自动化该过程。我不需要知道输出来提供输入。输入是预定的。

这是我迄今为止所做的

def enterProgram():
    # p = subprocess.call(link, shell=True)
    p = subprocess.Popen(link, shell=True, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
    p.communicate()
    p.stdin.write(querynew1)

此代码只运行程序并退出程序而不考虑我的输入。

  • link是程序的路径
  • querynew1是程序初始化并等待输入后的输入。

请就如何解决此问题提出建议。感谢。

2 个答案:

答案 0 :(得分:0)

应该这样做

proc = subprocess.Popen(link, shell=True, stdout=subprocess.PIPE)
print(proc.stdout.read())

答案 1 :(得分:0)

Popen.communicate()将输入作为参数。如果您只需要提供一次输入,并且只需要输出一次输出,那么应该这样做:

def enterProgram():
    p = subprocess.Popen(link, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
    out, err = p.communicate(querynew1)
    return out