個人的神殿

プログラミング

pythonの標準ライブラリを知る ~sys~

sysとかosとかいろいろとあるのは知っているが具体的に調べたことが全く無かったので、今回はコードを書きつつその挙動を確認したい。


sysPythonインタプリタの動作や、実行環境に関連する変数や関数のライブラリ。
主に プラットフォーム環境やスクリプト実行時に渡されたパラメータの取得やプログラムの終了に使用する。

1 sys.platform
sys.platformは、プラットホーム環境(win32, linuxなど)を教えてくれる。

import sys

print(sys.platform)
win32


2 sys. path
sys.pathにはPYTHONPATH環境変数のリストが格納されている。
sys. path[0]が実行したスクリプトディレクトリパスである。
PYTHONPATH環境変数については以下のサイトが参考になった
web-camp.io

import sys 

print(" 実行スクリプトのディレクトリパス")
print( sys.path[0])
print(" PYTHONPATH の 環境変数")
print( sys.path[1:])
['C:\\Users\\user\\Anaconda3\\python37.zip', 'C:\\Users\\user\\Anaconda3\\DLLs', 'C:\\Users\\user\\Anaconda3\\lib', 'C:\\Users\\user\\Anaconda3', 'C:\\Users\\user\\AppData\\Roaming\\Python\\Python37\\site-packages', 'C:\\Users\\user\\Anaconda3\\lib\\site-packages', ]


3 sys.argv
sys.argvはコマンドライン引数のリストを取得する。argv[0]には実行スクリプトの名前が入っている。

import sys

print("実行スクリプトの名前")
print( sys.argv[0])
print("コマンドライン引数のリスト")
print( sys.argv[1:])

py normallib.py math 38 という風に引数を渡してあげると……

$ py normallib.py math 38
実行スクリプトの名前
normallib.py
コマンドライン引数のリスト
['math', '38']

4 sys.exit()
sys.exit()はプログラムを終了させる。

import sys

print("sys.exit()より前なので出力される")
sys.exit()
print("sys.exit()より後なので出力されない")
sys.exit()より前なので出力される

5 sys.exc_info()
sys.exc_info()は、現在処理中の例外をタプルにして返す。
現在というのは基本的にはexceptブロック内の事を指す。
このタプルは3つの値を持ち、例外が発生がしてない時はそれぞれNoneになる。
何の例外が起きたかをログに残したい時に便利っぽい。

import sys

try:
    print("ここではまだ例外は発生していない")
    print(sys.exc_info())
    sys.exit()
except:
    print("現在処理中の例外")
    print(sys.exc_info())

print("現在はもう例外処理中ではなくなった")
print(sys.exc_info())
ここではまだ例外は発生していない
(None, None, None)
現在処理中の例外
(<class 'SystemExit'>, SystemExit(), <traceback object at 0x000001CFD29EBA08>)
現在はもう例外処理中ではなくなった
(None, None, None)

6 sys.executable
sys.executableには、pythonインタプリタ絶対パスが格納されている。

import sys

print("インタプリタの絶対パス")
print(sys.executable)
インタプリタの絶対パス
C:\Users\user\Anaconda3\python.exe

7 sys.version
sys.versionでは、pythonインタプリタのバージョンを確認できる。

import sys

print("インタプリタのバージョン")
print(sys.version)
インタプリタのバージョン
3.7.1 (default, Dec 10 2018, 22:54:23) [MSC v.1915 64 bit (AMD64)]

8 sys.version_info
sys.version_infoはインタプリタのバージョン情報を名前付きタプルで返す。値を抜き取りたい場合はこちらを使う。
名前付きタプルについては下記を参照。
qiita.com

import sys

print("インタプリタのバージョン(名前付きタプル)")
print(sys.version_info)
print("major={0}".format(sys.version_info.major))
print("minor={0}".format(sys.version_info.minor))
print("micro={0}".format(sys.version_info.micro))
print("releaselevel={0}".format(sys.version_info.releaselevel))
print("serial={0}".format(sys.version_info.serial))
インタプリタのバージョン(名前付きタプル)
sys.version_info(major=3, minor=7, micro=1, releaselevel='final', serial=0)
major=3
minor=7
micro=1
releaselevel=final
serial=0

9 sys.copyright
sys.copyrightにはpythonインタプリタ著作権に関する文字列が格納されている。

import sys

print("インタプリタの著作権")
print(sys.copyright)
インタプリタの著作権
Copyright (c) 2001-2018 Python Software Foundation.
All Rights Reserved.

Copyright (c) 2000 BeOpen.com.
All Rights Reserved.

Copyright (c) 1995-2001 Corporation for National Research Initiatives.
All Rights Reserved.

Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.
All Rights Reserved.

10 sys. getwindowsversion()
sys.getwindowsversion()はWinidowsのバージョン情報を返す。

import sys

print("Windowsのバージョン")
print(sys.getwindowsversion())
Windowsのバージョン
sys.getwindowsversion(major=10, minor=0, build=17763, platform=2, service_pack='')