我们能否知道从Windows或文本终端启动Python脚本?

Vin*_*ren 7 python windows ssh cygwin

我使用的是Windows版本的Python.我有一个使用Pyside的Python脚本(没什么复杂的,一种"hello world").

当我单击我的脚本文件或者从命令行启动它时,它会完美地执行,并且我会出现一个GUI.

但是,如果脚本是从文本终端(cmd.exe,cygwin,...)启动的话,我想避免使用GUI.一种自动知道它应该具有GUI输出还是文本输出的脚本.

有一种简单易行的方法吗?我希望能够使用Windows版本的Python(不是Cygwin软件包附带的版本).

当我从文本终端启动脚本时,一种显而易见的方法是添加一种"--no-gui"参数,但我想知道Python(或某些Python库)是否已经为此提供了工具.

此外,我在这台计算机上有一个SSH服务器(Cygwin-base),我可以远距离执行脚本但是没有GUI出现(当然),我没有错误消息.在这种情况下,由于缺少Windows图形支持或者脚本应该将其输出调整为文本终端,因此知道脚本是否失败是非常有趣的.

Jir*_*iri 2

我知道您可以将文件作为 .py 文件或 .pyw 文件运行。第二个选项用于 GUI 应用程序,它不会打开控制台窗口。要区分这两种情况,您可以检查isatty的方法sys.stdout

import sys
if sys.stdout.isatty():
    # .py file is running, with console window
    pass
else:
    # .pyw file is running, no console
    pass
Run Code Online (Sandbox Code Playgroud)

编辑

  • 我尝试在 Linux 机器上使用 putty+ssh 运行它 - 它返回 True。
  • 我尝试在 Windows 盒子上使用msys bash shell - 它返回 True (.py 文件)
  • 我尝试将 cygwin bash shell 与 cygwin python 一起使用 - 它返回 True (.py 文件)
  • 不幸的是,我无法尝试 putty + windows cygwin ssh 服务器。