或阿呆のブログ

Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。最近はスロット放浪記やってます。。

Python Shellのプロンプトの表示を変更する。sys.ps1,sys.ps2を変更する。

>>>

デフォルトはこれ。Pythonの言語仕様として、リダイレクト演算子">>"なんかもサポートされちゃっているので、山括弧だらけで非常に醜くなることも有り得る・・・。

今回ご紹介するのは、あくまでLinux環境でのお話ということを予めご了承下さい。windows版でも同様の手順でやってみようと思ったのですが、sysモジュールで取得出来る属性が違いということが判明し、それと同等の環境変数とかも無かったため、結局わからず仕舞いでした。かと言って、Linuxで主に作業している自分からすると、調べる気にもなれず・・・。

プロンプトの表示の変更方法

sysをimport

ついでに、sysの属性も表示してみる。

>>> import sys
>>> dir(sys)
['__displayhook__', '__doc__', '__egginsert', '__excepthook__', '__name__', '__package__', '__plen', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', '_mercurial', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'hexversion', 'long_info', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'py3kwarning', 'pydebug', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions']
  • sys.ps1
  • sys.ps2

この二つがプロンプトの表示を保持する変数っぽい。

sys.ps1を変更
>>> sys.ps1='$'
$'spam'
'spam'
$'ham'
'ham'

こんな感じで、sys.ps1を変更してやれば、通常のプロンプトの表示を変更することが出来る。

sys.ps2を変更
$print sys.ps2
... 
$sys.ps2=']]]'
$for i in range(1):
]]]     print "spam"
]]]
spam

こんな感じで、sys.ps2を変更してやればコマンドライン未完成のときのプロンプトの表示を変更することが出来る。