第2章 Pythonインタープリタの使い方(40問中1問)
Python3基礎試験:sys.argvと-c・-m
第2章は、インタープリタの起動のしかたと、渡した引数が入る sys.argv が中心です。このページでは、公式チュートリアルの記載と、起動の形を変えて Python 3.9.6 で実行した結果を並べて確かめます。覚えるのは、起動の形ごとに sys.argv[0] が変わること、-c と -m の後ろのオプションは sys.argv に残ること、対話モードの終了方法の3つです。
このページは試験の学習用の整理です。公式の問題は転載せず、例は公式チュートリアルの記載をもとにしています。
公式情報の確認
試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-09-18。
試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。
結論
- 渡したスクリプト名と引数は、文字列のリストとして sys モジュールの argv に入る。リストには少なくとも1つの要素がある
- sys.argv[0] は、スクリプトなら スクリプト名、-c なら '-c'、-m なら見つかったモジュールのフルパス、標準入力の '-' なら '-'、何も指定しなければ空文字列
- -c command と -m module の後ろに書いたオプションは、インタープリタのオプションとして処理されず、sys.argv に残る
- 対話モードの一次プロンプトは >>>、継続行の二次プロンプトは ... 。終了はファイル終端文字(Unix は Control-D、Windows は Control-Z)か quit()
- ソースファイルはデフォルトで UTF-8。別のエンコーディングは先頭行に # -*- coding: encoding -*- と書き、shebang があるときは2行目に書く
起動の形ごとのsys.argv
公式チュートリアルによると、インタープリタに渡したスクリプト名とその後に続く引数は、文字列のリストに変換されて sys モジュールの argv 変数に代入されます。import sys を実行するとこのリストにアクセスできます。
import sys
print(sys.argv)上の2行を argv_demo.py に保存し、起動の形を変えて Python 3.9.6 で実行した結果が次の表です。
| 起動の形 | sys.argv の中身 | ひとこと |
|---|---|---|
python3 script.py a b | ['script.py', 'a', 'b'] | スクリプト名が [0]、引数が続く |
python3 script.py | ['script.py'] | 引数なしでも要素は1つ |
python3 -c "..." x -y | ['-c', 'x', '-y'] | [0] は '-c'。-y もそのまま残る |
python3 -m module p -q | ['/…/module.py', 'p', '-q'] | [0] は見つかったモジュールのフルパス |
python3 - a b (標準入力からスクリプト) | ['-', 'a', 'b'] | [0] は '-' |
python3 < script.py | [''] | スクリプト名も引数もないので [0] は空文字列 |
試験では、sys.argv[0] に何が入るかが問われやすい点です。スクリプトを実行したときの [0] はスクリプト名で、引数は [1] から始まります。引数の個数を数えるときは、sys.argv[0] を含めるかどうかに注意します。python3 argv_demo.py a b の sys.argv は3要素で、len(sys.argv) も 3 です。
-c・-m・-iの違い
公式チュートリアルによると、python -c command [arg] ... は、command に指定した文を実行する形です。Python の文には空白やシェルにとって特殊な意味を持つ文字が含まれることが多いため、通常は command 全体を引用符で囲むことが勧められています。
python -m module [arg] ... は、コマンドラインでフルパスを指定した場合と同じように、module のソースファイルを実行する形です。標準ライブラリのモジュールにはスクリプトとして使えるものがあります。
python3 -c "import sys; print(sys.argv)" x -y
['-c', 'x', '-y']
python3 -m argv_demo p -q
['/…/argv_demo.py', 'p', '-q']どちらも、command や module の後ろに書いた -y や -q は、Python インタープリタのオプションとしては処理されません。コマンドやモジュールが処理できるように、sys.argv に残されます。-c と -m の後ろのオプションは、インタープリタではなく、実行する側のものです。python3 -c の後ろに -i を書いても、対話モードにはならず、sys.argv に ['-c', '-i'] と入ることを確かめました。
スクリプトを実行したあと、そのまま対話モードに入りたいときは、-i をスクリプトファイル名の前に指定します。python3 -i argv_demo.py では、スクリプトが sys.argv を表示したあとに、対話モードの一次プロンプトが出ました。
対話モードと終了方法
公式チュートリアルによると、インタープリタは Unix シェルに似た動作をします。標準入力が端末(tty)に接続された状態で起動するとコマンドを対話的に読み込んで実行し、ファイル名を引数に指定するか、ファイルを標準入力として起動すると、そのファイルからスクリプトを読み込んで実行します。端末からコマンドを読み込んでいるとき、インタープリタは対話モードで動作しています。
対話モードでは、一次プロンプトで次のコマンドの入力を促します。一次プロンプトは通常 3つの大なり記号(>>>)です。複数行にわたる構文の継続行では、二次プロンプトを表示し、デフォルトは3つのドット(...)です。最初のプロンプトを表示する前には、バージョン番号と著作権表示を含む起動メッセージが出力されます。
>>> the_world_is_flat = True
>>> if the_world_is_flat:
... print("Be careful not to fall off!")
...
Be careful not to fall off!終了は、ファイル終端文字(Unix では Control-D、Windows では Control-Z)を一次プロンプトに入力します。インタープリタは終了ステータス 0 で終了します。この操作で終了できない場合は quit() と入力します。終了はファイル終端文字か quit() で、終了ステータスは 0 です。
公式チュートリアルの脚注は、同時にインストールされた Python 2.x の実行ファイルとの衝突を避けるため、Unix では Python 3.x インタープリタの実行ファイルはデフォルトで python 以外の名前でインストールされると説明しています。そのため python3 や、バージョン付きの python3.x のような名前で起動します。
ソースコードの文字コード
公式チュートリアルによると、Python のソースファイルは、デフォルトでは UTF-8 でエンコードされているものとして扱われます。このエンコーディングでは、文字列リテラル、識別子、コメントに世界中のほとんどの言語の文字を同時に使えます。ただし、標準ライブラリの識別子に使われるのは ASCII 文字だけで、移植性が必要なコードもこの慣習に従うべきだとされています。
デフォルト以外のエンコーディングを宣言するには、ファイルの先頭行に特別なコメントを書きます。
# -*- coding: cp1252 -*-ソースコードが UNIX の shebang 行で始まる場合は、先頭行に宣言するというルールの例外です。この場合は、エンコーディングの宣言をファイルの2行目に書きます。
#!/usr/bin/env python3
# -*- coding: cp1252 -*-この2行を先頭に置いたファイルに、文字列 "caf\xe9" の長さを表示する処理を書き、Python 3.9.6 で実行すると、4 と表示されて、エラーなく動きました。エンコーディングの宣言は、先頭行。shebang があるときだけ2行目です。
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
よくある質問
第2章のインタープリタの使い方は、何問出ますか?
このサイトが整理した公式の章別出題数では、40問中1問(2.5%)です。出題数は少ない章なので、sys.argv[0] の値、-c と -m の違い、終了方法を優先して確認します。
python -c を使うとき、sys.argv[0] は何になりますか?
sys.argv[0] は '-c' になります。公式チュートリアルによると、-c command を使うと sys.argv[0] は '-c' になり、-m module を使うと見つかったモジュールのフルパスになります。Python 3.9.6 で python3 -c で引数 x と -y を付けて試すと、['-c', 'x', '-y'] と表示されました。
スクリプト名も引数も付けずに起動すると、sys.argv はどうなりますか?
要素が1つあり、sys.argv[0] は空文字列になります。公式チュートリアルは、リストには少なくとも1つの要素があると説明しています。Python 3.9.6 で python3 < script.py の形で試すと、[''] と表示されました。
対話モードはどう終了しますか?
一次プロンプトにファイル終端文字を入力します。Unix では Control-D、Windows では Control-Z で、インタープリタは終了ステータス 0 で終了します。この操作で終了できない場合は quit() と入力します。
