带有子进程和 Popen 的单独控制台 windows
Separate Console windows with subprocess and Popen
我最近从 python 2.7 更改为 python 3.4 和 anaconda。
我必须对我的代码进行一些更改才能在 3.4 中运行,但我遇到了一个问题,我不确定它是由 Python 的新版本还是 Anaconda 本身引起的。
在我转换之前,我有命令
p=subprocess.Popen('Location of .exe file')
这很好用,因为它在另一个 window/console 中打开了我的 .exe 文件,我必须在其中提供一些输入,而 python 程序在后台运行 运行。
现在,当我尝试 运行 相同的命令时,在单独的控制台上,我必须在与我的 python 程序 运行ning 相同的控制台中提供我的输入。
有什么方法可以让它恢复到原来的样子吗?有人可以向我解释是什么导致了这种变化吗?在这个论坛上已经针对这个问题提出了一些建议,但目前没有任何效果。
感谢您的帮助
简单地从 Python 的版本 2 升级到版本 3 应该不会有这么大的不同。
我认为在您的旧 Python2.7 环境中,您使用 Pythonw.exe
(注意结尾 w)来执行初始脚本在您的新 Python3 中,您使用的是 Python.exe
.
两种版本都存在两种风格。区别在于 Python.exe
是控制台应用程序,而 Pythonw.exe
是 GUI 应用程序:
- 从控制台启动时,
Python.exe
使用其父控制台,并将其交给其(控制台)子进程 - 如果从 GUI 程序(例如资源管理器)启动,它将分配一个新控制台
- 从控制台启动时,
Pythonw.exe
忽略其父控制台,并且将为任何(控制台)子进程分配一个新控制台。但是如果你试图在没有脚本的情况下执行它,它会立即结束,因为它没有标准输入。
所以只需使用 Pythonw
启动脚本,每个子进程都会有一个控制台
我最近从 python 2.7 更改为 python 3.4 和 anaconda。
我必须对我的代码进行一些更改才能在 3.4 中运行,但我遇到了一个问题,我不确定它是由 Python 的新版本还是 Anaconda 本身引起的。
在我转换之前,我有命令
p=subprocess.Popen('Location of .exe file')
这很好用,因为它在另一个 window/console 中打开了我的 .exe 文件,我必须在其中提供一些输入,而 python 程序在后台运行 运行。
现在,当我尝试 运行 相同的命令时,在单独的控制台上,我必须在与我的 python 程序 运行ning 相同的控制台中提供我的输入。
有什么方法可以让它恢复到原来的样子吗?有人可以向我解释是什么导致了这种变化吗?在这个论坛上已经针对这个问题提出了一些建议,但目前没有任何效果。
感谢您的帮助
简单地从 Python 的版本 2 升级到版本 3 应该不会有这么大的不同。
我认为在您的旧 Python2.7 环境中,您使用 Pythonw.exe
(注意结尾 w)来执行初始脚本在您的新 Python3 中,您使用的是 Python.exe
.
两种版本都存在两种风格。区别在于 Python.exe
是控制台应用程序,而 Pythonw.exe
是 GUI 应用程序:
- 从控制台启动时,
Python.exe
使用其父控制台,并将其交给其(控制台)子进程 - 如果从 GUI 程序(例如资源管理器)启动,它将分配一个新控制台 - 从控制台启动时,
Pythonw.exe
忽略其父控制台,并且将为任何(控制台)子进程分配一个新控制台。但是如果你试图在没有脚本的情况下执行它,它会立即结束,因为它没有标准输入。
所以只需使用 Pythonw
启动脚本,每个子进程都会有一个控制台