LoginSignup
74
80

More than 3 years have passed since last update.

Pythonライブラリ sys

Last updated at Posted at 2019-05-06

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プログラムに対して、
kokokoreというコマンドライン引数が指定されています。
sys.argvを使用することで、これらの引数をPythonプログラム内で扱うことができます。

これからsys.argvを使用してコマンド引数の扱いを確認します。
はじめにhoge.pyというPythonファイルを下記のように作成します。

hoge.py
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型です。")

そして実行してみると……

bash
jovyan@bb26596c4f15:~$ python hoge.py hello 10
['sys.py', 'hello', '10']
<class 'list'>
<class 'str'>
3
------------------------------
コマンドライン引数の第一引数は hello
31.400000000000002

出力の一行目から見ていきましょう。
argssys.argvによってコマンドライン引数を格納したものです。
リストの0番目はスクリプトのファイル名が入っています。
そして1番目以降はコマンドライン引数が順番に入っています。

出力の二行目はargsの、つまりsys.argvのデータ型を確認しています。
<class 'list'>と出力されているのでリスト型です。

出力の三行目はargs[2]、つまり2番目のコマンドライン引数のデータ型を確認しています。
2番目の引数は10ですが……<class 'str'>と出力されています。
数字を入れているので、整数型か浮動小数点数型になりそうな気がしますが、
コマンドライン引数は全て文字型になるようです。

出力の四行目はargsの長さを出力しています。
スクリプト名 + コマンドライン引数 なので3と出力されます。

sys.exit

このメソッドはSystemExit例外を発生させます。
この例外は特に処理をしない限り、スタックトレースを表示しません。
例えば、下記のようなpythonコードを書くと……

exit.py
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に関する記述が非常にわかりやすい。

74
80
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
74
80