更新:当我使用subprocess.call
而不是subprocess.Popen
,问题就解决了——有人知道是什么原因吗?还有另一个问题:我似乎找不到控制输出的方法......有没有办法将输出重定向subprocess.call
到字符串或类似的东西?谢谢!
我正在尝试使用Devenv
来构建项目,当我在命令提示符下键入它时它运行得很好devenv A.sln /build "Debug|Win32"
- 但是当我使用 python 使用与上面相同的行来运行它时,它什么也不显示Popen(cmd,shell=true)
。cmd
如果我删除|
,将其更改为"Debug"
only,它可以工作....
有人知道为什么会这样吗?我试过放一个\
before |
,但仍然没有发生任何事情..
这是我正在使用的代码:
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
,它可以完美地工作..
感谢这里的每一条评论