我有一个外部可执行文件,我试图从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)
答案 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”) 会起作用。