我已经成功运行了几个Python脚本,使用子进程模块从基本脚本调用它们:
subprocess.popen([sys.executable, 'script.py'], shell=True)
Run Code Online (Sandbox Code Playgroud)
但是,这些脚本中的每一个都会执行一些模拟(来自C++应用程序的.exe文件),这些模拟会向shell生成一些输出.所有这些输出都写入我发布这些脚本的基本shell.我想为每个脚本生成一个新shell.我shell=True在调用subprocess.call时尝试使用该属性生成新shell (也尝试使用popen),但它不起作用.
如何为subprocess.call生成的每个进程获取一个新shell?
我正在阅读Spencer建议的关于stdin和stdout的文档,并找到了解决问题的标志:subprocess.CREATE_NEW_CONSOLE.也许重定向管道也可以完成工作,但这似乎是最简单的解决方案(至少对于这个特定的问题).我刚测试它并完美地工作:
subprocess.popen([sys.executable, 'script.py'], creationflags = subprocess.CREATE_NEW_CONSOLE)
Run Code Online (Sandbox Code Playgroud)