python - 当我编写一个 python 脚本来使用配置 "Debug|Win32"运行 Devenv 时,它什么都不做

标签 python subprocess

更新:当我使用 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,它会完美运行..

感谢这里的每一条评论

最佳答案

devenv.exedevenv.com 之间是有区别的,它们都是可执行的并且位于同一目录中(叹息)。问题中使用的命令行和一些答案没有说明他们想要哪个,所以我不确定会使用哪个。

如果您想从命令行调用,则需要确保使用 devenv.com,否则您可能会弹出 GUI。我认为这可能是造成部分(但不是全部)困惑的原因。

关于python - 当我编写一个 python 脚本来使用配置 "Debug|Win32"运行 Devenv 时,它什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1049784/

相关文章:

Python的 `fromtimestamp`做离散跳转

python - 从 Python 子进程调用 Perl 脚本中的 GetOptions

java - 在 Java 中使用 Selenium 获取 Firefox Flash 插件的子进程 ID

python - 自定义对象检测 train.py - 错误 : Chunk at

Python file.write() 尝试两次?

Python multiprocessing+savefig 导致报错或系统死机

python - 在 Python-Subprocess 中运行连续的 Shell 命令

python - 将 Pandas 数据框转换为列表列表以输入到 RNN

Python 3 子进程管道 block

python - 在给定的 conda 环境中执行 python 脚本的最佳方式