【发布时间】:2021-03-04 01:20:41
【问题描述】:
我正在尝试在 shell 上执行 node 命令,我需要 python 不要等到 node 关闭后再继续下一行代码,所以我使用创建标志:CREATE_NEW_CONSOLE,但我还希望窗口不显示在屏幕上,所以我也想使用CREATE_NO_WINDOW。该名称似乎表明可以使用多个,实际上文档说:
creationflags(如果给定)可以是一个或多个以下标志:
CREATE_NEW_CONSOLE
CREATE_NEW_PROCESS_GROUP
ABOVE_NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
CREATE_NO_WINDOW
DETACHED_PROCESS
CREATE_DEFAULT_ERROR_MODE
CREATE_BREAKAWAY_FROM_JOB
但我找不到同时使用多个的方法。如果我尝试使用元组或列表,则会出现错误消息:CreateProcess() argument 6 must be int, not tuple。我也找不到任何Popen 与多个创建标志一起使用的示例。
有没有办法用两个标志来调用它?如果没有,我怎样才能达到分离进程并且屏幕上不出现难看的黑色窗口的目的?
我的代码:
def inicializar_API_biblia():
pathApiBibliaLocal = r'C:\\Users\\adassa\Desktop\\Programacao\\api-biblia\\index.js'
pid = subprocess.Popen(['node', pathApiBibliaLocal],
creationflags=(subprocess.CREATE_NO_WINDOW, subprocess.CREATE_NEW_CONSOLE)).pid
【问题讨论】:
-
它们可能是按位标志,要与二进制或运算符
|结合使用,例如subprocess.CREATE_NO_WINDOW | subprocess.CREATE_NEW_CONSOLE -
这就是我的想法。我没有窗户可以自己尝试
-
这就是在 Windows 上经常这样做。您应该能够通过查找 Microsoft 的文档来验证它。
-
也许
CREATE_NO_WINDOW | CREATE_NEW_CONSOLE的组合并没有真正的意义。 (可以指定一个或多个标志这一事实并不意味着所有组合都是有意义的。)您能否编辑问题以包含有关停止“正常脚本流”的原始问题的更多信息?就目前而言,这个问题似乎是xy problem 的教科书案例。 -
我需要python不要等到节点关闭后再继续下一行代码 - 但是
subprocess.Popen不等待直到子流程完成后再继续。为此,您需要调用wait()或communicate()之类的方法。你是如何断定subprocess.Popen这样做的,你有一个显示这种行为的最小示例吗?
标签: python subprocess