Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
windows中的Python将打开一个新控制台_Python_Windows_Batch File_Subprocess_Popen - Fatal编程技术网

windows中的Python将打开一个新控制台

windows中的Python将打开一个新控制台,python,windows,batch-file,subprocess,popen,Python,Windows,Batch File,Subprocess,Popen,我有一些Python函数,这些函数使用以下命令执行批处理命令: subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True).stdout.read().decode('utf-8').rstrip() 在Linux中运行这个是可以的,但是在Windows中运行它会在每个subprocess.Popen调用中打开一个新的控制台,而以前的控制台不知道新控制台中的函数所做的任何修改 如何继续?您的代码很复杂。我为execute命令编写pytho

我有一些Python函数,这些函数使用以下命令执行批处理命令:

subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True).stdout.read().decode('utf-8').rstrip()
在Linux中运行这个是可以的,但是在Windows中运行它会在每个subprocess.Popen调用中打开一个新的控制台,而以前的控制台不知道新控制台中的函数所做的任何修改


如何继续?

您的代码很复杂。我为execute命令编写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()

这将有助于了解您在cmd中使用的是什么。而且,我不认为在Win7和2.7.2中会发生这种情况。即使使用pause for cmd,我也看不到窗口。最后一件事:不能从子环境影响当前环境。这不是它的工作原理,除非你做了疯狂的事情,比如设置注册表。但是,您可以在生成新环境之前影响当前环境。