【发布时间】:2021-02-13 08:12:07
【问题描述】:
我试图在控制台中运行多个不同的 .exe 文件。
我用这段代码运行它,它运行良好。
import os
import subprocess
print('1. App1')
print('2. App2')
print('3. App3')
print('4. App4')
print('5. Exit')
while(True):
run = input('Choose App : ')
if run == '1':
subprocess.call('App1.exe', creationflags=subprocess.CREATE_NEW_CONSOLE)
elif run == '2':
subprocess.call('App2.exe', creationflags=subprocess.CREATE_NEW_CONSOLE)
elif run == '3':
subprocess.call('App3.exe', creationflags=subprocess.CREATE_NEW_CONSOLE)
elif run == '4':
subprocess.call('App4.exe', creationflags=subprocess.CREATE_NEW_CONSOLE)
else
exit()
但输入循环仅在第一个打开的应用关闭时才有效。所以我可以输入另一个应用程序来运行。
我的想法是我需要输入许多应用程序来同时运行,而无需等待第一个应用程序关闭。 我尝试添加一些返回功能,但它给了我一条错误消息
SyntaxError: 'return' 外部函数
任何人都知道如何使用subprocess.call同时打开多个应用程序而无需等待第一个应用程序关闭?
所以我尝试使用 Popen,但是当我选择输入应用程序时,它给了我一个错误
File ".exe", line 1 SyntaxError: Non-UTF-8 code starting with '\x90' in file .exe on line 1, but no encoding declared; see python.org/dev/peps/pep-0263 for details
这是代码:
import sys
import os
from subprocess import Popen, PIPE
print('1. App1')
print('2. App2')
while(True):
run = input('Choose App : ')
if run == '1':
run = Popen([sys.executable, "App1.exe"])
run.communicate()
elif run == '2':
run = Popen([sys.executable, "App2.exe"])
run.communicate()
else:
exit()
【问题讨论】:
-
为什么添加
sys.executable?试试Popen("App1.exe") -
因为我想在新窗口控制台中打开
App1.exe,没有 sys.executable 它只是在同一个窗口控制台中打开App1.exe,我无法同时打开App2.exe,还是我弄错了sys.executable函数? -
尝试添加
shell=True -
这能回答你的问题吗? subprocess.Popen in different console
-
当然,如果你使用
from subprocess import x,你就不需要使用subproccess.x,你只需使用x...
标签: python python-3.x