Windowsマシンで特定のPythonスクリプトの複数のインスタンスを実行しており、それぞれ異なるディレクトリから、別のシェルウィンドウを使用しています。残念ながら、Windowsはこれらの各シェルウィンドウに同じ名前を付けています。
<User>: C:\Windows\system32\cmd.exe - <script.py>
Pythonコマンドを使用して、この名前を別の名前に設定できますか?
これは、WindowsのPython2.7で機能します。
>>> import ctypes
>>> ctypes.windll.kernel32.SetConsoleTitleA("My New Title")
Windowsでは、単純なコンソールコマンドで十分です。
from os import system
system("title "+myCoolTitle)
とても簡単です。
十分な担当者がいないため、上記の投稿にコメントを追加することはできません-新しい投稿として。
Python 3で使用できます:
import ctypes
ctypes.windll.kernel32.SetConsoleTitleW("My New Title")
私はこの回答を編集しました:備考:SetConsoleTitle[〜#〜] w [〜#〜]を使用するようになりました。これは、Unicodeバージョンの SetConsoleTitle 関数。このようにして、ユニコードを使用でき、文字列/変数をバイトオブジェクトにエンコードする必要がなくなります。引数を文字列変数に置き換えるだけです。
これはWindows(IOW、これを実行するためのクロスプラットフォームの方法はありません)でのみ実行する予定なので、次のようにします。
スクリプト内で、 function を使用してコンソールのタイトルを変更できます
win32console.SetConsoleTitle("My Awesome App")
スクリプト内からcmd
ウィンドウタイトルを変更する方法を知りません。
ただし、 start
コマンド を使用すると、スクリプトの起動時にタイトルを設定できます。
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]
ミリ秒の約半分(ただし数十ではない)を費やす可能性がある場合windll.kernel32
メソッドは有望であると思われ、WatchDOG/StateVARs/ProgressLOG /自動自己診断メッセージの代替表示に役立ち、長時間実行されているプロセス中にソフトリアルタイムのニーズで効率的に表示されます。
starting the Idle-Shell がコマンドシェルではなくオプションの場合:
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
標準のエスケープシーケンスをコンソール(stdout)に出力することで、任意の言語からウィンドウタイトルを変更できるようになりました。バッチファイルの実際の例を次に示します 現在のディレクトリ名のみを表示するようにコマンドプロンプトを変更 ただし、ESC close-bracket 2セミコロンyour-title-here BEL(control-G)を印刷するだけで実行できます。また、簡単に適応できるPHPの例:
function windowTitle($title)
{printf("\033]2;%s\007", $title);}