はじめに
プログラムを作成する課題でsysモジュールを利用したので、基本的な使い方を整理したいと思います。
sysモジュールとは
Pythonに標準で組み込まれている標準ライブラリです。
公式Docsによると、以下のような説明です。
This module provides access to some variables used or maintained by the interpreter and to functions that interact strongly with the interpreter. It is always available. Unless explicitly noted otherwise, all variables are read-only.
インタプリタで使用・保持されている変数を使うことができたり、インタプリタとの相互作用が強い関数を利用することができたりするモジュールのようです。
とこれだけ見てもよくわかりませんね。
では、具体的にどのようなことができるのでしょうか?
以下のパラメータや関数を例に挙げて説明していきます。
-
sys.argv
-
sys.exit([arg])
-
sys.path
sysモジュールの利用方法
その前に、sysモジュールをスクリプトファイル上で利用できるようにimportしておきます。
標準ライブラリと聞くと、組み込み関数のprint文のようにimportしなくても使えそうな気がしますが、importが必要です。
import sys
とすることでsysモジュールを利用できるようになります。
sys.argv
コマンドラインに入力した引数はインタプリタが受け取り、sys.argvに格納されます。
sys.argvの中身は以下のように、文字列のリストとして受け取ります。
python example.py --hoge hoge
['example.py', '--hoge', 'hoge'] # 出力結果
sys.exit([arg])
プログラムを終了させることができます。
引数のargには終了コードが入り、整数を入れることができます。
指定なし、あるいはNoneを指定すると0(正常終了)を返します。
終了コードは一般的には0~127まであるそうですが、0から2だけ覚えておくのが良さそうです。
終了コード | 意味 |
---|---|
0 | 正常終了 |
1 | 汎用的なエラー |
2 | 構文エラー |
また、sys.exitは整数以外にもオブジェクトを指定することができます。
例えば以下のようにエラーメッセージを指定することで、エラーメッセージを出力させつつプログラムを終了させることができます。
sys.exit("This is error message!")
余談
sys.exit()ではなく、exit()がプログラム中に使われていたことを見たことがありました。
ざっと調べた限り、どちらもSystemExitを送出するのでほぼ同じ挙動だと思います。
公式Docsによると、exit()はプログラム中に記述するべきでなく、対話シェルで使うように!とのことです。
sys.path
sys.pathは文字列のリストです。
どんな文字列からなるリストかというと、importされたときに、モジュールを検索するファイルパスが格納されているリストです。
リストなので、ファイルパスを追加したいときは、sys.path.append
で追加可能です。
モジュールがimportできない場合は、このsys.pathを確認してみましょう。
終わりに
今回はsysモジュールの基本的な使い方をまとめました。
これ以外にも当然多くの機能がsysモジュールにはあります。
どんなパラメータが入っていて、どんな関数を利用できるのか?
どういうことができるモジュールなのか?
これらのことを理解しておくと、プログラムを作成するときにどのモジュールを使うべきか?の検討がつきやすくなると思います。
今後、sysモジュールに限らず、プログラム中で利用していくモジュールがどんな機能を提供してくれるのか?は頭に入れていきたいと思います。