27

特定のPythonスクリプトのいくつかのインスタンスをWindowsマシンで実行しています。それぞれが異なるディレクトリから、別々のシェルウィンドウを使用しています。残念ながら、Windowsはこれらの各シェルウィンドウに同じ名前を付けています。

<User>: C:\Windows\system32\cmd.exe - <script.py>

Pythonコマンドを使用してこの名前を別の名前に設定することは可能ですか?

4

10 に答える 10

44

これは、WindowsのPython2.7で機能します。

>>> import ctypes
>>> ctypes.windll.kernel32.SetConsoleTitleA("My New Title")
于 2012-09-27T16:56:04.580 に答える
42

Windowsでは、単純なコンソールコマンドで十分です。

from os import system
system("title " + myCoolTitle)

素晴らしくて簡単。

于 2012-04-19T13:50:14.920 に答える
23

担当者が足りないため、上記の投稿にコメントを追加することはできません。新しい投稿としてです。

Python 3では、次を使用できます。

import ctypes
ctypes.windll.kernel32.SetConsoleTitleW("My New Title")

私はこの回答を編集しました。現在、 SetConsoleTitle関数のUnicodeバージョンであるSetConsoleTitleWを使用していることに注意してください。このようにして、Unicodeを使用でき、文字列/変数をバイトオブジェクトにエンコードする必要がなくなります。引数を文字列変数に置き換えるだけです。

于 2014-01-01T01:33:25.240 に答える
6

これはWindowsでのみ実行するため(IOW、これを行うためのクロスプラットフォームの方法はありません):

  1. Python用のWin32拡張機能をダウンロードしてインストールします
  2. スクリプト内で、関数を使用してコンソールのタイトルを変更できます

    win32console.SetConsoleTitle("My Awesome App")

于 2011-09-12T13:04:46.433 に答える
3

cmdスクリプト内からウィンドウタイトルを変更する方法を知りません。

ただし、startコマンドを使用すると、スクリプトの起動時にタイトルを設定できます。

于 2011-09-12T11:53:27.557 に答える
3

投稿された方法system()windllベースの方法の比較

投稿された2つのメソッドに関連するレイテンシオーバーヘッドの小さな定量的比較を追加するために結び付けます。

|>>> 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]

約0.5ミリ秒(ただし数十ミリ秒ではない)を費やす可能性がある場合、このwindll.kernel32方法は有望であり、WatchDOG / StateVARs / ProgressLOG /自動自己診断メッセージの代替表示に適している可能性があり、効率的に表示されます長時間実行されるプロセス中の、ソフトなリアルタイムのニーズ。

于 2015-10-11T01:13:33.310 に答える
2

アイドルシェルを開始することが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
于 2011-09-12T11:54:24.760 に答える
0

標準のエスケープシーケンスをコンソール(stdout)に出力することにより、任意の言語内からウィンドウタイトルを変更できるようになりました。バッチファイルの実際の例を次に示します。コマンドプロンプトを変更して、現在のディレクトリ名のみを表示しますが、 ESCの閉じかっこ2セミコロンyour-titleを印刷するだけです。ここではBEL(control-G)で実行できます。また、簡単に適応できるPHPの例:

function windowTitle($title)
  {printf("\033]2;%s\007", $title);}
于 2018-10-09T22:30:30.673 に答える
0

XYZの代わりに、保持するウィンドウ名を入力します。

import os
os.system("title XYZ")
于 2020-08-28T04:42:59.543 に答える
0

使用する:

import ctypes
ctypes.windll.kernel32.SetConsoleTitleW('new title')

または:

import os
os.system('title new title')
于 2021-12-06T06:37:30.450 に答える