Python インタープリタは、それが利用可能になっているマシンには、 普通 /usr/local/bin/python としてインストールされている。 だから、Unix シェルの検索パスに /usr/local/bin を 入れれば、シェルにコマンド
python
を打鍵することでインタープリタを開始できる。 インタープリタをどのディレクトリに置くかはインストール時のオプションだから、 ほかの場所もあり得る。まわりにいる Python の専門家かシステム管理者に 問い合わせて欲しい (たとえば /usr/local/python がよくある候補地だ)。
一次プロンプトで end-of-file 文字 (Unixでは Control-D、 Windows では Control-Z) を打鍵すると、 インタープリタは exit ステータス 0 で終了する。 もしこれが働かないときは、"import sys; sys.exit()" という コマンドを打鍵することによってインタープリタを終了できる。
インタープリタの行編集機能は普通あまり洗練されていない。
Unixでは、インタープリタをインストールした人が
GNU readline ライブラリのサポートを有効にしているかもしれない。
これはより高度な対話的編集およびヒストリ機能を追加する。
コマンド行編集がサポートされているかどうかを調べるには、
最初に現れた Python プロンプトに対して Control-P を打鍵してみるのが、
おそらく最も早い。
もしベルが鳴れば、コマンド行編集が可能だ。
キー操作の手ほどきについては付録 A を見るように。
もしも何も起こらないようにみえたり、あるいは P
がエコーされるなら、
コマンド行編集は利用可能になっていない。
単にバックスペースを使って現在行から文字を消せるだけだろう。
インタープリタはやや Unix シェルのように動作する。つまり、 標準入力を tty デバイスに接続した状態で呼び出すと コマンドを対話的に読み取って実行し、 ファイル名を引数にしたりファイルを標準入力にして呼び出すと そのファイルからスクリプトを読み取って実行する。
インタープリタを開始するもう一つの方法は "python -c command [arg] ..." だ。 これはシェルの -c オプションと同じように command の文を実行する。 Python の文はしばしばスペースなどのシェルにとって特別な文字を含むので、 command 全体をダブルクォートで囲むのが良い。
"python file" と "python <file" には 一つの違いがあることに注意して欲しい。 後者では input() や raw_input() の呼出しなどの プログラムからの入力要求に対して file が充てられる。 このファイルはプログラムが実行を開始する前に既にパーサによって最後まで 読み取られているから、プログラムは即座に end-of-file に出会うことになる。 前者では (普通期待するように) 入力要求に対して 何であれ Python インタープリタの 標準入力に接続されたファイルまたはデバイスが充てられる。
スクリプトファイルを使うとき、 スクリプトを走らせた後そのまま対話モードに入れると便利な場合がある。 そうするにはスクリプトの前に -i を渡せばよい。 (スクリプトが標準入力から読み取られるときは、 前の段落の説明と同じ理由で、これは働かない)。
インタープリタに渡されたスクリプト名とそれ以降の付加的な引数は、
変数 sys.argv
としてスクリプトへ渡される。これは文字列のリストだ。
その長さは少なくとも 1 となる。
スクリプトも引数も与えられないとき、sys.argv[0]
は空文字列だ。
スクリプト名が (標準入力を意味する) '-'
として与えられたとき、
sys.argv[0]
は '-'
にセットされる。
-c command が使われたとき、
sys.argv[0]
は '-c'
にセットされる。
-c command より後にあるオプションは、
Python インタープリタのオプション処理によって消されずに
sys.argv
に残されるため、command で処理することができる。
コマンドが tty から読み取られるとき、
インタープリタは対話モード (interactive mode)にあると言われる。
このモードではインタープリタは一次プロンプト
(primary prompt) で次のコマンドの入力を促す。
一次プロンプトは普通、三つの大ナリ記号 (">>
> ") だ。
継続行 (continuation line) に対しては
二次プロンプト (secondary prompt) で入力を促す。
これはデフォルトでは三つのドット ("... ") だ。
インタープリタは、そのバージョン番号と著作権表示を言明する welcome メッセージ
を印字してから、最初のプロンプトを印字する。
python Python 1.5.2b2 (#1, Feb 28 1999, 00:02:06) [GCC 2.8.1] on sunos5 Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam >>>
継続行は、複数の行から構成される構文を入力するときに必要となる。 例として以下 if 文を見て欲しい。
>>> the_world_is_flat = 1 >>> if the_world_is_flat: ... print "Be careful not to fall off!" ... Be careful not to fall off!
エラーが起こると、 インタープリタはエラーメッセージとスタックトレースを印字する。 対話モードのときはそれから一次プロンプトに戻る。 入力がファイルから来ているときはスタックトレースを印字してから 非ゼロ exit ステータスで終了する。 (try 文の except 節で処理された例外は、 ここで言うところのエラーではない)。 エラーには無条件に致命的 (fatal) であって非ゼロ exit をひき起こすものがある。 内部的な矛盾状態とある種のメモリ不足がこれにあてはまる。 エラーメッセージはすべて標準エラーストリームへ書かれる。 実行コマンドからの通常の出力は標準出力へ書かれる。
中断文字 (interrupt character、普通は Control-C か DEL) を 一次または二次プロンプトに対して打鍵すると入力が取り消され、 一次プロンプトへ戻る2.1。 コマンドの実行中に中断文字を打鍵すると KeyboardInterrupt 例外が 発生する。この例外は try 文で処理できる。
BSD の流れをくむ Unix システムでは、 (インタープリタが利用者の PATH 上にあると仮定して)
#! /usr/bin/env python
という行を Python スクリプトの先頭におき、 そしてそのファイルに実行可能モードを与えることによって、 シェルスクリプトのように Python スクリプトを直接実行可能にできる。 "#!" はファイルの最初の2文字でなければならない。 いくつかのプラットフォームにおいては、この第1行がMac OS("\r")や、Windows("\r\n")行末で はなく Unixスタイルの行末("\n")で終わる必要がある。 ハッシュ (ないしポンド) 文字 "#" は Python ではコメントを開始するために使われていることに注意して欲しい。
スクリプトには chmod コマンドで、実行可能モード、またはパー ミッションを与えることができる。
$ chmod +x myscript.py
Python ソースファイルに ASCII と異なるエンコーディングを使用するこ
とが可能だ。それを行う最良の方法は #!
行直後にもう1行のソース
ファイルのエンコーディングを定義する特別のコメント行を置くことだ。
# -*- coding: iso-8859-1 -*-
この宣言で、ソースファイル中の文字はすべてコード iso-8859-1
として扱われる。また、選択されたエンコーディングの中で直接Unicode文字
列リテラルを書くことが可能だ。利用可能なエンコーディングのリストは
Python Library Reference の
codecs についての章で見つけることができる。
利用しているエディタが、UTF-8 署名(UTF-8 signature 別名 BOM - バイト
オーダーマーク)を付加した UTF-8
としてファイルを保存するできる
なら、エンコーディング宣言の代用として BOM を使用できる。
Options/General/Default Source Encoding/UTF-8
がセットの場
合、 IDLE はこの機能をサポートする。古い Python リリース(2.2以前)では
署名が理解されないし、#!
ファイルがオペレーティングシステム
によって理解されない事に注意するように。
UTF-8 (署名あるいはエンコーディング宣言のいずれかを利用して)の使用によっ て、世界のほとんどの言語の文字を文字列リテラルおよびコメントの中で同時 に使用することができる。署名あるいはエンコーディング宣言がないファイル 中での 非ASCII 文字の使用はサポートしていない。文字をすべて適切に表示 するために、利用するエディタはファイルが UTF-8 であることを認識しなけ ればならない。また、ファイルの中で利用している文字をすべてサポートする フォントを使用しなければならない。
Python を対話的に使うとき、インタープリタを起動するたびに何らかの 標準的なコマンドを実行させるようにするとしばしば手頃で便利だ。 これを行なうには、実行したいスタートアップ時のコマンドを記述したファイルの名前を、 PYTHONSTARTUP という名前の環境変数にセットすればよい。 これは Unix シェルの .profile の機能に似ている。
このファイルが読まれるのは対話セッションだけで、
Python がスクリプトからコマンドを読み取るときや、
/dev/tty がコマンドのソースとして明示的に与えられたとき (このときは、
スタートファイルを読まない事以外では対話セッションのように振舞う) には読まれない。
このファイルは対話コマンドが実行されるのと同じ名前空間で実行されるので、
これが定義したり輸入したオブジェクトは、限定子無しで対話セッションで使える。
このファイルでプロンプト sys.ps1
と sys.ps2
を変更する事ができる。
もしもさらに何か付加的なスタートアップファイルをカレントディレクトリから 読みたいならば、グローバルなスタートアップファイルの中で "if os.path.isfile('.pythonrc.py'): execfile('.pythonrc.py')"の様なコードを利用してプログラムする事ができる。 もしスクリプトの中でスタートアップファイルを使いたいならば、 スクリプトの中で明示的にそうしなくてはならない。
import os filename = os.environ.get('PYTHONSTARTUP') if filename and os.path.isfile(filename): execfile(filename)