はじめに
datetimeモジュールを使ってカレンダーを実装する課題で、ターミナルから引数を受け取るためにsysモジュールを使用しました。
備忘録として、基本的な使い方をまとめました。
使う前に import
import sys
sysは標準ライブラリ含まれるモジュールで、print() や len()などのbuilt-in functionとは異なり使う前に import が必要です。
sys.argv
import sys
print(sys.argv)
sys.argv はコマンドライン引数のリストです。sys.argv[0] はスクリプト自身のファイル名で、sys.argv[1] 以降が実際の引数になります。
実行例:
python myscript.py -m 2
['myscript.py', '-m', '2']
sys.exit()
if not 1 <= month <= 12:
print(f"{month} is neither a month number (1..12) nor a name")
sys.exit(1)
引数に終了コードを入れることで、プログラムが終了されます。
sys.exit(0) は正常終了、sys.exit(1) はエラー終了を意味します。
sys.path
import sys
print(sys.path)
importされたときに、built-inモジュール以外のモジュールを検索するパスの一覧を取得できます。スクリプトの中で使いたいモジュールはsys.pathの中に記載されている必要があります。
別のプロジェクトで作ったモジュールのパスは、sys.path.append(PATH)で追加できます。
カレンダー作成の際の月指定オプションの例
import sys
if "-m" in sys.argv:
if len(sys.argv) < 3:
print("Please specify 1~12 after the -m option")
sys.exit(1)
try:
month = int(sys.argv[2])
except ValueError:
print("Please specify 1~12 after the -m option")
sys.exit(1)
if not 1 <= month <= 12:
print(f"{month} is neither a month number (1..12) nor a name")
sys.exit(1)
参考リンク
おわりに
今回はsysモジュールについてまとめました。
コマンドライン引数処理やエラーハンドリングの際に使用できるモジュールとして抑えておきます。
これからも少なくとも実装で使ったモジュールについてはしっかり抑えるクセをつけておこうと思います。