我需要启动一个python控制台并控制其输出。我正在使用python subprocess.Popen()创建一个新实例。
我在python脚本中保存了以下代码并从windows命令提示符运行它。当我运行脚本时,它会在当前的Windows命令提示符下启动python实例,不要在单独的控制台中启动它。
p = subprocess.Popen(["C:\Python31\python.exe"], shell=False,
# stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
out, _ = p.communicate()
print(out.decode())
答案 0 :(得分:1)
在Windows中,您可以使用CREATE_NEW_CONSOLE创建标记在新的控制台会话中生成子进程:
from subprocess import Popen, CREATE_NEW_CONSOLE, PIPE
p = Popen(["C:\Python31\python.exe"], creationflags=CREATE_NEW_CONSOLE)
答案 1 :(得分:0)
如果您在 Windows 上,您可以使用 win32console 模块为您的线程或子进程输出打开第二个控制台。如果您使用的是 Windows,这是最简单、最简单的方法。
这是一个示例代码:
import win32console
import multiprocessing
def subprocess(queue):
win32console.FreeConsole() #Frees subprocess from using main console
win32console.AllocConsole() #Creates new console and all input and output of subprocess goes to this new console
while True:
print(queue.get())
#prints any output produced by main script passed to subprocess using queue
if __name__ == "__main__":
queue = multiprocessing.Queue()
multiprocessing.Process(target=subprocess, args=[queue]).start()
while True:
print("Hello World in main console")
queue.put("Hello work in sub process console")
#sends above string to subprocess and it prints it into its console
#and whatever else you want to do in ur main process
您也可以使用线程来做到这一点。如果你想要队列功能,你必须使用队列模块,因为线程模块没有队列