「実行とデバッグ」の編集履歴(バックアップ)一覧に戻る
実行とデバッグ - (2025/02/21 (金) 22:30:38) のソース
** 目次 #contents ** コマンドライン引数 sysモジュールのargvを使う。以下のようなスクリプトファイルを作成してargv.pyと保存する。 #highlight(){{ import sys for i in range(0, len(sys.argv)): print(sys.argv[i]) }} 以下、実行例。最初の要素(インデックスは0)にはそのスクリプトファイル名が含まれており、スクリプトファイルに引数を与えた場合は、1以降にその引数が文字列で含まれる。 #highlight(){{ >python argv.py argv.py >python argv.py "ABC d" 123 e f argv.py ABC d 123 e f }} ** 対話型実行環境でスクリプトを実行する exec関数を使う。カレントディレクトリ(現在のフォルダー)にあるtest.pyを実行するのであれば、以下のようにする。 #highlight(){{ >>> exec(open("test.py").read()) }} ** スクリプト実行終了時にエラーレベル(終了コード)を返す sysモジュールのexit関数を使う。 #highlight(){{ import sys print('終了') sys.exit(3) }} コマンドプロンプトでは、コマンド実行終了時の戻り値をエラーレベルといい、環境変数ERRORLEVELに格納される。 #highlight(){{ >python errorlevel.py 終了 >echo %errorlevel% 3 }} PowerShellでは、コマンド終了時の戻り値を終了コードといい、自動変数$lastexitcodeに格納される。 #highlight(){{ PS > python .\errorlevel.py 終了 PS > echo $lastexitcode 3 }} ** ソースコードの文字コードを指定する Pythonはソースコードが書かれたソースファイルの文字コードを、デフォルトではUTF-8としており、それ以外の文字コードで保存されている場合は、ソースファイルの読み込みに失敗する。ソースファイルの文字コードにUTF-8以外を使う場合は、ソースファイルの先頭に、以下の1行か2行を書けばよい。 #highlight(){{ # coding=<encoding name> }} #highlight(){{ #!/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としているため、最初の例では実行に失敗しているが、次の例のとおり文字コードを指定することで、問題なく実行できたことが分かる。 #highlight(){{ >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 セナディア役の鈴木みのりさん、かわいい リフ役の瀬戸麻紗美さん、かわいい }} 文字コードの指定に使う文字列は、以下の一覧表が掲載されている。 - https://docs.python.org/ja/3.13/library/codecs.html#standard-encodings