在Python中设置Windows命令行终端标题

Jon*_*han 21 python windows low-latency

我在Windows机器上运行了几个Python脚本的实例,每个实例来自不同的目录并使用单独的shell窗口.不幸的是,Windows为每个shell窗口提供了相同的名称:

<User>: C:\Windows\system32\cmd.exe - <script.py>
Run Code Online (Sandbox Code Playgroud)

是否可以通过Python命令将此名称设置为其他名称?

Jef*_*per 34

这适用于Windows下的Python2.7.

>>> import ctypes
>>> ctypes.windll.kernel32.SetConsoleTitleA("My New Title")
Run Code Online (Sandbox Code Playgroud)

  • 或者python 3的ctypes.windll.kernel32.SetConsoleTitleW("我的新标题") (12认同)
  • 为了最好的可移植性和独立于`ctypes.windll`(ctypes中最糟糕的想法)的缓存原型,使用`kernel32 = ctypes.WinDLL('kernel32',use_last_error = True);``kernel32.SetConsoleTitleW(u"My New标题")`.还应设置带有签名`(result,func,args)`的`errcheck`函数.如果结果为假(即调用失败),它应该"引发ctypes.WinError(ctypes.get_last_error())",这将启用具有异常的惯用Python编程而不是粗略的C错误代码. (3认同)

Sho*_*vBR 28

在Windows上,一个简单的控制台命令就足够了:

from os import system
system("title "+myCoolTitle)
Run Code Online (Sandbox Code Playgroud)

很好,很容易.

  • @Jonathan Jeffrey Harper的答案更好,因为也没有依赖关系,而且它不会调用shell. (2认同)
  • 这个答案的好处是,如果用户拥有管理员权限,cmd shell的内置`title`命令会在标题之前添加`Administrator:`. (2认同)

use*_*036 16

由于代表不够,我无法在上面的帖子中添加评论 - 所以作为新帖子.

Python 3中,您可以使用:

import ctypes
ctypes.windll.kernel32.SetConsoleTitleW("My New Title")
Run Code Online (Sandbox Code Playgroud)

我编辑了这个答案:请注意,它现在使用SetConsoleTitle W,这是SetConsoleTitle函数的Unicode版本.这样您就可以使用unicode,不再需要将字符串/变量编码为字节对象.您可以使用字符串变量替换参数.


bgp*_*ter 5

因为你只是在Windows上运行它(IOW,没有跨平台的方法来执行此操作):

  1. 下载并安装pythonWin32扩展
  2. 在脚本内部,您可以使用该功能更改控制台的标题

    win32console.SetConsoleTitle("My Awesome App")