2014-09-14 3 views
1

У меня есть некоторые функции Python, которые выполняют пакетные команды с:Python в окнах открывает новую консоль

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

Запуск этого в Linux это нормально, но работает в Windows, он открывает новую консоль на каждом subprocess.Popen вызова и предыдущая консоль не знает о каких-либо изменениях, внесенных этой функцией в новую консоль.

Как я могу продолжить?

+1

Это помогло бы знать, что вы используете для 'cmd'. Кроме того, я не вижу, что это происходит в Win7 с 2.7.2. Я не вижу окна, даже когда я использую «паузу» для 'cmd'. Последнее: вы ** не можете ** влиять на текущую _environment_ от дочернего _environment_. Это не так, как это работает (если вы не делаете сумасшедшие вещи, такие как настройка реестра). Тем не менее, вы _can_ влияете на текущую среду до появления новой. [См. Документацию для os.environ] (https://docs.python.org/2/library/os.html#os.environ). – mtik00

ответ

-1

Ваш код является сложным. я пишу питон скрипт для команды выполнения:

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() 
Смежные вопросы