【问题标题】:Loop Input with Return Function in Python [duplicate]Python中带有返回函数的循环输入[重复]
【发布时间】: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


【解决方案1】:

subprocess.callsubprocess.run 都在返回之前等待该过程完成。您可以做的一件事是改用Popen,这会在您可以与之通信的新进程中启动进程。

看看:https://docs.python.org/3.8/library/subprocess.html#popen-objects

【讨论】:

  • 所以子进程不可能让它工作?
  • Popen 是子流程模块的一部分。
  • 所以我只是用 Popen 尝试过,但是当我选择输入应用程序时,它给我一个错误“文件”.exe”,第 1 行语法错误:以 '\x90' 开头的非 UTF-8 代码在第 1 行的文件 .exe 中,但未声明编码;有关详细信息,请参阅 python.org/dev/peps/pep-0263"你知道如何修复它吗?
  • @rullymnh 你能用你所做的 Popen 更改来编辑你原来的问题吗?
猜你喜欢
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
  • 2017-07-31
  • 2012-03-06
  • 2018-10-27
  • 1970-01-01
  • 2014-10-04
相关资源
最近更新 更多