我有一个外部可执行文件,我试图从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)
Run Code Online (Sandbox Code Playgroud)
Ara*_*gon 14
使用subprocess.call,更多信息在这里:
import subprocess
subprocess.call(["C:\\temp\\calc.exe"])
Run Code Online (Sandbox Code Playgroud)
要么
import os
os.system('"C:/Windows/System32/notepad.exe"')
Run Code Online (Sandbox Code Playgroud)
我希望它可以帮助你......
sgr*_*eve 10
该os.system方法已折旧,不应在新应用程序中使用.子进程模块是执行所需操作的pythonic方式.
以下是我几周前subprocess用来加载文件的一些代码的示例,您需要使用该命令来延迟退出,直到收到数据并且启动的程序完成为wait():
import subprocess
cmd = "c:\\file.exe"
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, creationflags=0x08000000)
process.wait()
Run Code Online (Sandbox Code Playgroud)
creationflags=0x08000000 是一个可选参数,它禁止窗口的启动,如果您不需要直接看到您调用的程序,这可能很有用.
小智 5
选项1
import subprocess
subprocess.call('C:\Windows\System32\calc.exe')
Run Code Online (Sandbox Code Playgroud)
选项 2
subprocess.Popen(['C:\Windows\System32\calc.exe'],stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True).communicate()
Run Code Online (Sandbox Code Playgroud)
选项 3
import os
os.system('C:\Windows\System32\calc.exe')
Run Code Online (Sandbox Code Playgroud)