sys とは
sys
はPythonのインタプリタや実行環境に関する情報を扱うためのライブラリです。
使用しているプラットフォームを調べる時や、
スクリプトの起動パラメータを取得する場合などに利用します。
インストール
標準ライブラリなので、はじめから入っています。
pipなどでインストールする必要はありません。
##sys.version
使用しているPythonのバージョンを文字列型で。
> sys.version
'3.7.3 (default, Mar 27 2019, 23:40:30) \n[GCC 6.3.0 20170516]'
sys.platform
sys.platform
sys,platform
はスクリプトを実行したOSを表示します。
私の場合はlinux
と表示されました。
例えば、カレントディレクトリ/home/user1に、test.pyとPython packageディレクトリtestがあるとします。
sys.argv
sys.argv
はコマンドライン引数を扱います。
コマンドライン引数とは名前の通り、コマンドラインで指定した引数のことです。
Pythonでプログラムを作成し利用する場合、
条件に応じた値を引数で指定する場合があります。
その時にsys.argv
が役に立ちます。
jovyan@bb26596c4f15:~$ python hoge.py koko kore
上記のプログラムではhoge.py
というPythonプログラムに対して、
koko
とkore
というコマンドライン引数が指定されています。
sys.argv
を使用することで、これらの引数をPythonプログラム内で扱うことができます。
これからsys.argv
を使用してコマンド引数の扱いを確認します。
はじめにhoge.py
というPythonファイルを下記のように作成します。
import sys
#↓ここでコマンドライン引数をargsという変数に格納
args = sys.argv
if len(args) == 3 :
print(args) #コマンドライン引数を出力
print(type(args)) #コマンドライン引数のデータ型を出力
print(type(args[2])) #コマンドライン第一引数のデータ型
print(len(args))
print("-"*30) #区切ってるだけ。意味はないです。
print("コマンドライン引数の第一引数は " + args[1] )
print(float(args[2])*3.14) #floatの意味は下に書きます。
else:
print("コマンドライン引数を2つ入力してください \n 第一引数はstr型、第二引数はfloat型です。")
そして実行してみると……
jovyan@bb26596c4f15:~$ python hoge.py hello 10
['sys.py', 'hello', '10']
<class 'list'>
<class 'str'>
3
------------------------------
コマンドライン引数の第一引数は hello
31.400000000000002
出力の一行目から見ていきましょう。
args
はsys.argv
によってコマンドライン引数を格納したものです。
リストの0番目はスクリプトのファイル名が入っています。
そして1番目以降はコマンドライン引数が順番に入っています。
出力の二行目はargs
の、つまりsys.argv
のデータ型を確認しています。
<class 'list'>
と出力されているのでリスト型です。
出力の三行目はargs[2]
、つまり2番目のコマンドライン引数のデータ型を確認しています。
2番目の引数は10
ですが……<class 'str'>
と出力されています。
数字を入れているので、整数型か浮動小数点数型になりそうな気がしますが、
コマンドライン引数は全て文字型になるようです。
出力の四行目はargs
の長さを出力しています。
スクリプト名 + コマンドライン引数 なので3
と出力されます。
sys.exit
このメソッドはSystemExit
例外を発生させます。
この例外は特に処理をしない限り、スタックトレースを表示しません。
例えば、下記のようなpythonコードを書くと……
import sys
for i in range(100):
print(i)
if i == 10:
sys.exit()
jovyan@bb26596c4f15:~$ python exit.py
0
1
2
3
4
5
6
7
8
9
10
このようにexit()
到達時点でプログラムが終了します。
参考文献&参考サイト
今回の記事制作にあたり参考にさせていただいた記事や書籍です。
とても勉強になりました。ありがとうございました。
色々なPythonのライブラリを「知る」ための本
今回の記事を書いたきっかけ。今後もこの書籍を参考に記事を書きます。(Primeなら無料で読めます!)
LIFE WITH PYTHON 「ライブラリ:sys」
基本的な構成を参考にしました。とてもわかりやすいです。
python公式ドキュメント sys --- システムパラメータと関数
THE 本家。
Python学習講座 コマンドライン引数
sys.argv
に関する記述が非常にわかりやすい。