2013-06-25 120 views
0

我想运行一个使用python脚本的cmd exe文件。从Python运行子进程

我有以下代码:

def run_command(command): 
    p = subprocess.Popen(command, shell=True, 
      stdout=subprocess.PIPE, 
      stderr=subprocess.STDOUT) 
    return p.communicate() 

然后我使用: run_command(R “C:\用户\用户\桌面\应用\ uploader.exe”) 这将返回选项菜单,其中i需要指定cmd exe运行的附加参数。所以我传递其他参数为cmd exe运行。 我如何做到这一点。我看了subprocess.communicate但我无法理解它

+0

有时您可以添加'stdin = subprocess.PIPE',然后编写程序期望的通信方式,如'p.communicate(“程序需要什么”)'。如果你真的需要互动的东西,你有麻烦。在unix-y系统上它是一件非常简单的事情 - 只需使用pexpect来驱动交互式提示。但我不知道windows中的任何罐装解决方案。您可以使用win32并为该进程创建一个控制台窗口,但很难弄清楚并且正确。 – tdelaney

回答

0

如果uploader.exe接受命令行选项,那么你可以尝试subprocess.call以下方式:

如果你的命令uploader.exe,上传的目录为C:\Users\...\application,并且附加参数是x,你可以尝试

import subprocess 
def run_command(command, directory, arg): 
    return subprocess.call(["command %s"%arg], cwd=directory, shell=True) 

run_command("uploader.exe", "C:\\Users\\..\\application", "x") 

然而,这是假定你不必实际上indexer.exe后您Popen互动吧。

+0

如果upload.exe可以使用命令行参数完成其任务,这是一个很好的答案。 – tdelaney

+0

我如何使控制台窗口保持打开状态?运行“run_command”后 – Rohit