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

时间:2009-11-06 17:16:28

标签: python windows shell

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

6 个答案:

答案 0 :(得分:93)

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

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

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

答案 1 :(得分:25)

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

答案 2 :(得分:6)

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

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyCodeCombination;
import javafx.scene.input.KeyCombination;
import javafx.stage.Stage;

public class Main extends Application {

    private String userInput;

    @Override
    public void start(Stage stage) {
        TextField textField = new TextField();

        textField.setOnKeyPressed(e -> {
            System.out.println(e.getCode());
            if (e.isShiftDown()&&!e.getCode().toString().equals("SHIFT")) {
                KeyCombination kc = new KeyCodeCombination(e.getCode(), KeyCombination.CONTROL_ANY);
                userInput = kc.toString();
                System.out.println(userInput);
            }
        });

        Scene scene = new Scene(textField);
        stage = new Stage();
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) { launch(args); }
}

答案 3 :(得分:1)

在Win10中非常简单:
打开PowerShell,然后键入以下命令:

type nul > openWindowed.vbs
type nul > main.py
notepad openWindowed.vbs

将下一个粘贴到 openWindowed.vbs 文件中:

Set WshShell = CreateObject("WScript.Shell") 
WshShell.Run chr(34) & "C:\Users\path\to\main.py" & Chr(34), 0
Set WshShell = Nothing

.vbs 文件将执行您的 main.py 文件,而无需打开cmd。我在 make.py 文件中经常使用它,因为我不知道cmake脚本。

答案 4 :(得分:0)

我有同样的问题。我尝试了很多选择,但都失败了 但是我尝试了这种方法,它神奇地起作用了!!!!!

所以,我在一个文件夹中有这个python文件(mod.py),我曾经使用命令提示符运行 当我以前关闭cmd时,gui会自动关闭.....(SAD), 所以我如下运行 C:\....>pythonw mod.py 不要忘记pythonw“ w”是IMP

答案 5 :(得分:0)

将文件扩展名更改为 .pyw 并将以下行(根据您的 Python 版本进行相应更改)添加到脚本的开头:

#! c:\\Users\\sohra\\AppData\\Local\\Programs\\Python\\Python38\\pythonw.exe

现在,如果您双击该文件,它将由 pythonw.exe 执行而没有控制台窗口。