如何在不出现Windows控制台的情况下运行Python脚本

2024-05-29 03:31:53 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有什么方法可以在不出现命令shell的情况下运行Python脚本? 用“.pyw”扩展名命名我的文件不起作用。

编辑:ShellExecute()解决了问题


Tags: 文件方法命令脚本编辑情况shell命名
3条回答

在自2.5(可能更早)以来的所有python安装中,如果安装已正确完成,.py文件与python.exe关联,.pyw文件与pythonw.exe关联

如果关联已被篡改,或已被特定用户重写,则可能会有所不同。

在命令中运行以下命令:

ftype | find "pythonw"
assoc | find ".pyw"

我得到:

 Python.NoConFile="D:\Program Files\Python27\pythonw.exe" "%1" %*
.pyw=Python.NoConFile

如果你没有,你可以做几件事来解决:

  1. 重新安装/修复python安装(运行installer,它将建议修复安装)
  2. 如果您不是计算机的管理员,则可以将.pyw文件与pythonw.exe关联。小问题是,您必须在之后更改注册表项以添加额外的参数,或者在.pyw文件中删除一个参数将不考虑它(它很少使用,但仍然使用)

    [HKEY_CLASSES_ROOT\Python.NoConFile\shell\open\command] @="\"L:\\Portable_Python_2.7.3.1\\App\\pythonw.exe\" \"%1\" %*"

尝试使用Python的pythonw.exe可执行文件启动脚本。

在Windows操作系统中,控制台应用程序python.exe不带w是控制台应用程序)的可执行文件运行时显示控制台窗口;另一方面,常规Windows应用程序不会生成黑色控制台窗口。

在这个老问题中,您可以找到关于这两个可执行文件的详细信息:pythonw.exe or python.exe?

关于Windows,这里有不同类型的应用程序:Difference between Windows and Console application

使用ShellExecuteEx函数。

BOOL ShellExecuteEx(
_Inout_ SHELLEXECUTEINFO *pExecInfo
);

这是pExecInfo: ***nShow-指定打开应用程序时如何显示该应用程序的标志

typedef struct _SHELLEXECUTEINFO {
  DWORD     cbSize;
  ULONG     fMask;
  HWND      hwnd;
  LPCTSTR   lpVerb;
  LPCTSTR   lpFile;
  LPCTSTR   lpParameters;
  LPCTSTR   lpDirectory;
  int       nShow;/*=0 if you don't want the console window to appear*/
  HINSTANCE hInstApp;
  LPVOID    lpIDList;
  LPCTSTR   lpClass;
  HKEY      hkeyClass;
  DWORD     dwHotKey;
  union {
    HANDLE hIcon;
    HANDLE hMonitor;
    } DUMMYUNIONNAME;
    HANDLE    hProcess;
} SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO;

相关问题 更多 >

    热门问题