Обновление: Когда я использую subprocess.call
вместо subprocess.Popen
, проблема решается - кто-нибудь знает, в чем причина? И возникла еще одна проблема: я не могу найти способ управления выводом ... Есть ли способ перенаправить вывод из subprocess.call
в строку или что-то в этом роде? Спасибо!
Я пытаюсь использовать Devenv
для создания проектов, и он прекрасно работает, когда я набираю его в командной строке, как devenv A.sln /build "Debug|Win32"
- но когда я использую Python для его запуска, используя Popen(cmd,shell=true)
, где cmd
та же строка, что и выше, она ничего не показывает. Если я уберу |
, заменим его только на "Debug"
, он будет работать ...
Кто-нибудь знает, почему это происходит? Я пытался поставить \
до |
, но все равно ничего не произошло ..
Это код, который я использую:
from subprocess import Popen, PIPE
cmd = ' "C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\IDE\\devenv" solution.sln /build "Debug|Win32" '
sys.stdout.flush()
p = Popen(cmd,shell=True,stdout=PIPE,stderr=PIPE)
lines = []
for line in p.stdout.readlines():
lines.append(line)
out = string.join(lines)
print out
if out.strip():
print out.strip('\n')
sys.stdout.flush()
... который не работает, однако, если я поменяю Debug|Win32
на Debug
, он отлично работает ..
Спасибо за каждый комментарий здесь