Как запустить внешний исполняемый файл с помощью Python?

У меня есть внешний исполняемый файл, который я пытаюсь запустить из Python script. Выполняется 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)

Ответ 1

используйте subprocess.call, подробнее здесь:

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

или

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

Надеюсь, это поможет вам...

Ответ 2

Метод os.system обесценивается и не должен использоваться в новых приложениях. Модуль подпроцесса - это питонический способ сделать то, что вам нужно.

Вот пример некоторого кода, который я написал несколько недель назад, используя subprocess для загрузки файлов, команду, которую вы должны использовать для задержки выхода, пока данные не будут получены, а запущенная программа не будет wait():

import subprocess

cmd = "c:\\file.exe"
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, creationflags=0x08000000)
process.wait()

creationflags=0x08000000 - необязательный параметр, который подавляет запуск окна, что может быть полезно, если программа, которую вы вызываете, не должна отображаться непосредственно.

Ответ 3

Опция 1

import subprocess

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

Вариант 2

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

Вариант 3

import os
os.system('C:\Windows\System32\calc.exe')

Ответ 4

Это сработало для меня после того, как я попробовал все остальное: измените местоположение вашей программы на Python таким же, как и расположение .exe. И тогда все просто:

subprocess.call("calc.exe") будет работать.