在没有Windows控制台的情况下运行Python脚本

twn*_*ale 57 python windows shell

有没有办法在没有命令shell暂时出现的情况下在Windows XP中运行Python脚本?我经常需要使用Python自动化WordPerfect(用于工作),即使我的脚本没有输出,如果我从没有WP执行它,空壳仍会弹出一秒钟然后消失.有什么方法可以防止这种情况吗?某种输出重定向可能呢?

Jed*_*ith 97

pythonw.exe将在没有命令提示符的情况下运行脚本.问题是Python解释器Python.exe与控制台子系统链接以产生控制台输出(因为这是90%的情况) - pythonw.exe反而链接到GUI子系统,Windows不会创建控制台它的输出窗口,除非它要求一个.

本文讨论了使用Python进行GUI编程,并且还提到了pythonw.exe.它还有助于指出,如果您的Python文件结束.pyw而不是.py,标准Windows安装程序将正确设置关联并在pythonw.exe中运行您的Python.

在你的情况下,它听起来不是一个问题,但依赖pythonw.exe使你的应用程序特定于Windows - 其他解决方案可以在Mac OS X上实现.

  • 如果您的“program.pyw”仍然弹出控制台窗口,可能是因为您的 #! 程序开头的行。(在将为 Linux 编写的 GUI 程序(并以“#!/usr/bin/env python”开头)复制到 Windows 7 时发现了困难。)只需删除该行即可。 (3认同)
  • 它不像您解释的那样使用 pythonw.exe 用于 .pyw。您能否更新答案。它的 2016 (2认同)

Pet*_*ers 27

如果使用".pyw"扩展名命名文件,则Windows将使用pythonw.exe解释器执行它们.这不会打开用于运行脚本的dos控制台.


小智 12

这适用于所有 Windows 版本:

1.使用记事本(或任何其他文本编辑器)创建“ Runner.bat ”文件并插入以下内容:

@echo off
python server.py
Run Code Online (Sandbox Code Playgroud)

其中server.py是要运行的 Python 脚本的路径。

2.用记事本创建“ RunScript.vbs ”文件并插入以下内容:

CreateObject("Wscript.Shell").Run "runner.bat",0,True
Run Code Online (Sandbox Code Playgroud)

3.双击运行“ RunScript.vbs ”文件,您的 Python 脚本将在没有任何可见控制台窗口的情况下运行

ps 我知道这不是您问题的一部分,但通常情况下,如果您想在 Windows 启动时运行脚本(用户登录后),只需将“ RunScript.vbs ”文件的快捷方式粘贴到启动文件夹中即可。(在 Windows 10 上主要位于:C:\Users[USERNAME]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

此致


W.L*_*eto 6

我尝试了上面的方法,然而,由于我的脚本中有一个Timer,控制台仍会出现并快速消失.最后,我找到了以下代码:

import ctypes
import os
import win32process

hwnd = ctypes.windll.kernel32.GetConsoleWindow()      
if hwnd != 0:      
    ctypes.windll.user32.ShowWindow(hwnd, 0)      
    ctypes.windll.kernel32.CloseHandle(hwnd)
    _, pid = win32process.GetWindowThreadProcessId(hwnd)
    os.system('taskkill /PID ' + str(pid) + ' /f')
Run Code Online (Sandbox Code Playgroud)