【发布时间】:2011-09-22 02:47:28
【问题描述】:
我已经成功运行了几个 Python 脚本,使用 subprocess 模块从基本脚本调用它们:
subprocess.popen([sys.executable, 'script.py'], shell=True)
但是,这些脚本中的每一个都会执行一些模拟(来自 C++ 应用程序的 .exe 文件),这些模拟会向 shell 生成一些输出。所有这些输出都写入我启动这些脚本的基础 shell。我想为每个脚本生成一个新的 shell。我尝试在调用 subprocess.call 时使用shell=True 属性生成新的shell(也尝试使用popen),但它不起作用。
如何为 subprocess.call 生成的每个进程获取一个新的 shell?
我正在阅读 Spencer 建议的有关 stdin 和 stdout 的文档,并找到了解决问题的标志:subprocess.CREATE_NEW_CONSOLE。也许重定向管道也可以完成这项工作,但这似乎是最简单的解决方案(至少对于这个特定问题)。我刚刚对其进行了测试并且运行良好:
subprocess.popen([sys.executable, 'script.py'], creationflags = subprocess.CREATE_NEW_CONSOLE)
【问题讨论】:
-
您的意思是要在不同的终端窗口中运行脚本吗?如果是这样,您使用的是什么终端程序?
-
@unutbu:是的,我想在不同的终端窗口中运行每个脚本。我正在使用基本的 Window 终端(只是运行 cmd)
-
@Eder:我对 Windows 了解不多。这有帮助吗:stackoverflow.com/questions/303838/…? (即
start cmd.exe或start python script.py...) -
@Eder 你应该接受斯宾塞的回答。
-
@Jim:谢谢!这是我第二次,我不知道。
标签: python subprocess