Intro to Python
実行とデバッグ
最終更新:
introtopython
目次
コマンドライン引数
sysモジュールのargvを使う。以下のようなスクリプトファイルを作成してargv.pyと保存する。
import sys
for i in range(0, len(sys.argv)):
print(sys.argv[i])
以下、実行例。最初の要素(インデックスは0)にはそのスクリプトファイル名が含まれており、スクリプトファイルに引数を与えた場合は、1以降にその引数が文字列で含まれる。
>python argv.py
argv.py
>python argv.py "ABC d" 123 e f
argv.py
ABC d
123
e
f
対話型実行環境でスクリプトを実行する
exec関数を使う。カレントディレクトリ(現在のフォルダー)にあるtest.pyを実行するのであれば、以下のようにする。
>>> exec(open("test.py").read())
スクリプト実行終了時にエラーレベル(終了コード)を返す
sysモジュールのexit関数を使う。
import sys
print('終了')
sys.exit(3)
コマンドプロンプトでは、コマンド実行終了時の戻り値をエラーレベルといい、環境変数ERRORLEVELに格納される。
>python errorlevel.py
終了
>echo %errorlevel%
3
PowerShellでは、コマンド終了時の戻り値を終了コードといい、自動変数$lastexitcodeに格納される。
PS > python .\errorlevel.py
終了
PS > echo $lastexitcode
3
ソースコードの文字コードを指定する
Pythonはソースコードが書かれたソースファイルの文字コードを、デフォルトではUTF-8としており、それ以外の文字コードで保存されている場合は、ソースファイルの読み込みに失敗する。ソースファイルの文字コードにUTF-8以外を使う場合は、ソースファイルの先頭に、以下の1行か2行を書けばよい。
# coding=<encoding name>
#!/usr/bin/python
# -*- coding: <encoding name> -*-
「<encoding name>」の箇所に文字コードを示す文字列を挿入する。Shift_JISであればcp932、shift_jisx0213などを書く。UTF-8であることを明示するのであればutf_8を指定する。
以下は、いずれもShift_JISで保存されたソースファイルcp932_1.pyとcp932_2.pyをそれぞれWindowsのコマンドプロンプトで実行した例。PythonはデフォルトをUTF-8としているため、最初の例では実行に失敗しているが、次の例のとおり文字コードを指定することで、問題なく実行できたことが分かる。
>type cp932_1.py
print('セナディア役の鈴木みのりさん、かわいい')
print('リフ役の瀬戸麻紗美さん、かわいい')
>type cp932_2.py
# coding=cp932
print('セナディア役の鈴木みのりさん、かわいい')
print('リフ役の瀬戸麻紗美さん、かわいい')
>python cp932_1.py
SyntaxError: Non-UTF-8 code starting with '\x83' in file ○○○\cp932_1.py on line 1, but no encoding declared; see https://python.org/dev/peps/pep-0263/ for details
>python cp932_2.py
セナディア役の鈴木みのりさん、かわいい
リフ役の瀬戸麻紗美さん、かわいい
文字コードの指定に使う文字列は、以下の一覧表が掲載されている。