【问题标题】:Python in windows opens a new consoleWindows 中的 Python 打开一个新控制台
【发布时间】:2014-09-14 08:22:02
【问题描述】:

我有一些 Python 函数可以执行批处理命令:

subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True).stdout.read().decode('utf-8').rstrip()

在 Linux 中运行它是可以的,但在 Windows 中运行它会在每个子进程中打开一个新控制台。Popen 调用并且之前的控制台不知道新控制台中的函数所做的任何修改。

我该如何继续?

【问题讨论】:

  • 了解您使用的cmd 会有所帮助。另外,我没有看到 Win7 和 2.7.2 发生这种情况。即使我对cmd 使用“暂停”,我也看不到窗口。最后一件事:您不能从子环境影响当前环境。这不是它的工作原理(除非你做一些疯狂的事情,比如设置注册表)。但是,您可以在生成新环境之前影响当前环境。 See the documentation for os.environ.

标签: python windows batch-file subprocess popen


【解决方案1】:

您的代码很复杂。我为执行命令编写python脚本:

import subprocess
import sys
subprocess.Popen([sys.executable,cmd],stdout=subprocess.PIPE).stdout.read().decode('utf-8').rstrip()

如果不起作用,您可以更轻松地尝试:

import subprocess
import sys
proc = subprocess.Popen([sys.executable,cmd],stdout=subprocess.PIPE)
proc.communicate()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 2011-12-22
    • 2019-01-20
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 2020-08-10
    相关资源
    最近更新 更多