【问题标题】:Close the terminal window after doing something做完某事后关闭终端窗口
【发布时间】:2018-11-08 15:11:42
【问题描述】:

我只想打印一些信息并调用应用程序,例如记事本。

from subprocess import call
print("Opening Notepad++")
call([r"C:\Program Files (x86)\Notepad++\notepad++.exe"])
exit()

现在的问题是终端窗口不会自动关闭。它保持打开状态,直到我关闭记事本窗口。如何让终端窗口自动消失。

【问题讨论】:

    标签: python subprocess call


    【解决方案1】:

    像这样使用Popen

    import subprocess
    
    subprocess.Popen(r'C:\Program Files (x86)\Notepad++\notepad++.exe', \
                     stdout=subprocess.PIPE, shell=False, creationflags = 0x08000000)
    

    【讨论】:

    • 在第 1 行添加“PIPE”并从第 2 行删除“子进程”后它工作了
    • "stdout=subprocess.PIPE, shell=False" 在这里做什么
    • 抱歉回复晚了,他们没有工作的原因是因为导入错误,现在应该没问题了,他们只是常用的参数,你可以阅读文档中的详细说明here :docs.python.org/2/library/…
    【解决方案2】:

    您需要使用start COMMAND 调用记事本命令,就像在Linux 中我们使用COMMAND & 将进程分叉到后台一样。在 Windows 中,我们使用 start COMMAND

    所以你重构了代码:

    from subprocess import call
    print("Opening Notepad++")
    call([r"start C:\Program Files (x86)\Notepad++\notepad++.exe"])
    exit()
    

    虽然请注意我没有要测试的 Windows 机器。

    【讨论】:

      【解决方案3】:

      您可以使用 pythonw.exe: pythonw script.py

      或将其扩展名更改为pyw,例如script.pyw 并双击它。

      如果您这样做,您应该将 "Opening Notepad++" 打印到弹出窗口。见:Python Notification Popup that disappears

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-26
        • 1970-01-01
        • 1970-01-01
        • 2021-07-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多