Установить заголовок терминала командной строки Windows в Python
Я запускаю несколько экземпляров определенного скрипта Python на машине Windows, каждый из другого каталога и с помощью отдельной оболочки windows. К сожалению, Windows дает каждому из этих окон оболочки одно и то же имя:
<User>: C:Windowssystem32cmd.exe - <script.py>
можно ли установить это имя на что-то еще с помощью команды Python?
7 ответов
это работает для python2.7 под Windows.
>>> import ctypes
>>> ctypes.windll.kernel32.SetConsoleTitleA("My New Title")
в Windows достаточно простой консольной команды:
from os import system
system("title "+myCoolTitle)
приятно и легко.
из - за недостаточного rep я не могу добавить комментарий к вышеуказанному сообщению-так как новый пост.
на Python 3 вы можете использовать:
import ctypes
ctypes.windll.kernel32.SetConsoleTitleW("My New Title")
я отредактировал этот ответ: обратите внимание, что теперь он использует SetConsoleTitleW, который является версией Unicode SetConsoleTitle. Таким образом, вы можете использовать unicode и больше не кодировать строку/переменную в объект byte. Вы можете просто заменить аргумент строкой переменная.
поскольку вы собираетесь запускать это только в Windows (IOW, нет кросс-платформенного способа сделать это):
- скачать и установить Win32 расширения для python
-
внутри вашего скрипта, вы можете изменить заголовок консоли с функции
win32console.SetConsoleTitle("My Awesome App")
Я не знаю, как изменить cmd
заголовок окна из скрипта.
однако вы можете установить заголовок при запуске скрипта, если используете start
команда.
Если запуск Idle-shell является опцией вместо оболочки cmd:
idle.py [-c command] [-d] [-e] [-s] [-t title] [arg] ...
-c command run this command
-d enable debugger
-e edit mode; arguments are files to be edited
-s run $IDLESTARTUP or $PYTHONSTARTUP first
-t title set title of shell window
сравнение комментария system()
& windll
методы
пытаюсь добавить небольшое количественное сравнение задержка расходы связан с двумя из опубликованных методов:
|>>> from zmq import Stopwatch
|>>> aSWX = Stopwatch()
|>>> from os import system
|>>> aSWX.start();system( 'TITLE os_SHELL_CMD_TITLE_TXT');aSWX.stop() 15149L [us]
|>>> aSWX.start();system( 'TITLE os_SHELL_CMD_TITLE_TXT');aSWX.stop() 15347L [us]
|>>> aSWX.start();system( 'TITLE os_SHELL_CMD_TITLE_TXT');aSWX.stop() 15000L [us]
|>>> aSWX.start();system( 'TITLE os_SHELL_CMD_TITLE_TXT');aSWX.stop() 14674L [us]
|>>> aSWX.start();system( 'TITLE os_SHELL_CMD_TITLE_TXT');aSWX.stop() 14774L [us]
|>>> aSWX.start();system( 'TITLE os_SHELL_CMD_TITLE_TXT');aSWX.stop() 14551L [us]
|>>> aSWX.start();system( 'TITLE os_SHELL_CMD_TITLE_TXT');aSWX.stop() 14633L [us]
|>>> aSWX.start();system( 'TITLE os_SHELL_CMD_TITLE_TXT');aSWX.stop() 15202L [us]
|>>> aSWX.start();system( 'TITLE os_SHELL_CMD_TITLE_TXT');aSWX.stop() 14889L [us]
|>>> from ctypes import windll
|>>> aSWX.start();windll.kernel32.SetConsoleTitleA('DLL');aSWX.stop() 5767L [us]
|>>> aSWX.start();windll.kernel32.SetConsoleTitleA('DLL');aSWX.stop() 643L [us]
|>>> aSWX.start();windll.kernel32.SetConsoleTitleA('DLL');aSWX.stop() 573L [us]
|>>> aSWX.start();windll.kernel32.SetConsoleTitleA('DLL');aSWX.stop() 749L [us]
|>>> aSWX.start();windll.kernel32.SetConsoleTitleA('DLL');aSWX.stop() 689L [us]
|>>> aSWX.start();windll.kernel32.SetConsoleTitleA('DLL');aSWX.stop() 651L [us]
в случаях, когда можно потратить около половины миллисекунды (но не несколько десятков)windll.kernel32
метод кажется многообещающим и может служить лучше для альтернативного отображения сторожевого пса / StateVARs / ProgressLOG / auto-self-diagnostic сообщения, эффективно отображаемые в режиме реального времени, во время длительных процессов.