如何使用Python运行外部可执行文件?

时间:2012-11-01 12:33:58

标签: arcpy

我有一个外部可执行文件,我试图从Python脚本运行。 CMD可执行文件运行但不生成输出。可能在生成输出之前退出。有关如何延迟退出直到产生输出的任何建议?

import subprocess, sys
from subprocess import Popen, PIPE
exe_str = r"C:/Windows/System32/cmd C:/temp/calc.exe"

parent = subprocess.Popen(exe_str,  stderr=subprocess.PIPE)

4 个答案:

答案 0 :(得分:12)

使用subprocess.call,更多信息here

import subprocess
subprocess.call(["C:\\temp\\calc.exe"])

import os
os.system('"C:/Windows/System32/notepad.exe"')

我希望它可以帮助你...

答案 1 :(得分:8)

os.system方法已弃用,不应在新应用程序中使用。子进程模块是执行所需操作的pythonic方法。

以下是我几周前使用subprocess加载文件时编写的一些代码的示例,您需要使用该命令来延迟退出,直到收到数据并且启动的程序完成{{1} }:

wait()

import subprocess cmd = "c:\\file.exe" process = subprocess.Popen(cmd, stdout=subprocess.PIPE, creationflags=0x08000000) process.wait() 是一个可选参数,它禁止启动一个窗口,如果你不需要直接看到你正在调用的程序,这个窗口很有用。

答案 2 :(得分:2)

选项1

function readURL(input) {
    if (input.files && input.files[0]) {
    var reader = new FileReader();

        reader.onload = function (e) {
           $('#image_upload_preview').attr('src', e.target.result);
        }

    reader.readAsDataURL(input.files[0]);
    }
}  

选项2

import subprocess

subprocess.call('C:\Windows\System32\calc.exe')

选项3

subprocess.Popen(['C:\Windows\System32\calc.exe'],stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True).communicate()

答案 3 :(得分:0)

在尝试了所有其他方法后,这对我有用: 将python程序的位置更改为与.exe所在的位置相同。 然后是简单的:

subprocess.call(“ calc.exe”) 会起作用。