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上实现.
小智 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)
此致
我尝试了上面的方法,然而,由于我的脚本中有一个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)