当前位置: 首页 > 面试题库 >

如何从基本的Python脚本中生成新的Shell来运行Python脚本?

樊胜
2023-03-14
问题内容

我已经成功运行了几个Python脚本,并使用subprocess模块​​从基本脚本中调用了它们:

subprocess.popen([sys.executable, 'script.py'], shell=True)

但是,每个脚本都执行一些模拟(来自C
++应用程序的.exe文件),这些模拟会生成一些输出到外壳程序。所有这些输出都从启动这些脚本的位置写入基本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)

问题答案:

Popen已经生成了一个子进程来处理事情。您只需要重定向输出管道。查看子流程文档,特别是关于popen
stdin,stdout和stderr重定向的部分。

如果您不重定向这些管道,它将从父管道继承它们。只是要小心死锁您的进程。

您需要每个子进程都有其他窗口。这也是处理。查看子流程的startupinfo部分。它解释了在Windows上设置哪些选项以为每个子流程生成一个新的终端。请注意,它需要使用shell
= True选项。



 类似资料:
  • 问题内容: 我尝试谷歌搜索答案,但没有运气。 我需要使用我的超级计算机服务器,但是要运行我的python脚本,必须通过shell脚本执行。 例如我要执行 如何做到这一点? 问题答案: 只需确保python可执行文件在PATH环境变量中,然后在脚本中添加 细节: 在文件job.sh中,放入 执行此命令以使脚本可运行: 运行 :

  • 问题内容: 我需要从Django Shell执行Python脚本。我试过了: 但这没有用。只是在等我写东西。 问题答案: 该<<部分有误,请<改用: 你也可以这样做: 对于python3,你需要使用

  • 我需要从Django shell执行一个Python脚本。我试过: 但是没有成功。它只是在等我写些什么。

  • 问题内容: 之前曾在不同程度上提出过这样的问题,但我觉得还没有以简明的方式回答,因此我再次提出。 我想在Python中运行脚本。可以说是这样的: 它获取文件位置,读取它,然后打印其内容。没那么复杂。 好吧,那我该如何在C#中运行它呢? 这就是我现在所拥有的: 当我传递位置和位置无效时。有人告诉我,我应该通过的,然后作为。 我已经寻找了一段时间,只能找到建议使用IronPython或类似工具的人。但

  • 我在两个Python脚本之间进行通信时遇到一些问题。我对python和raspberry pi是相当陌生的,我已经发现了多种方法,经过一段时间的理解,这些方法对我来说是无用的。所以在花了几个小时之后,我想最好问问更有经验的人。 所以我正在做一个项目,我使用一个网页来通过多个覆盆子派控制多台机器。(4个覆盆子)您可以在网页上输入机器以及机器应该激活多长时间。然后,网页使用机器和时间执行Python脚

  • 问题内容: 我想从PHP运行Python脚本。该脚本的语法很好,当我从命令行运行它时,它会在它旁边生成一个图像文件。当我从命令行运行PHP文件(包含Python exec)时,它将生成一个图像文件。很好。问题是:当我使用浏览器并运行PHP时,它不会生成任何图像文件。我使用的是Xubuntu OS。 问题答案: 问题是matplotlib后端设置。我更改为“ Agg”,并且plot函数正常运行。