作成しているコードによってはOSの種類やバージョン、エディションで処理を変えたい場合がでてくるかもしれません。このページではPython実行中にOSの種類を判定する方法について解説します。
Contents
osモジュール
osモジュールのnameを使用すると、Windows系かUnix系かを判別することが可能です。以下の3種類の文字列があります。
- posix・・・Unix系
- nt・・・Windows系
- java・・・Jython
通常よく使用されてるPythonはCPythonと呼ばれC言語で実装されていますが、それ以外に(現在メンテされていませんが)JythonというJVM上で動くPythonもあり、この場合は”java”が返されます。
以下はWindowsマシンで実行した場合の結果です。
import os os_name = os.name print(os_name) # nt
platformモジュール
platform.system()によるOSの判定
platformモジュールを使用すると現在実行しているプラットフォームのさらに細かい情報を得ることが可能です。system()を使用すると下表の通りOSの情報を文字列で得ることができます。
- Linux
- Darwin
- Windows
- Java
MacOSはDarwinに該当します。以下はLinuxマシンで実行した場合の結果です。
import platform s = platform.system() print(s) # Linux
platform.uname()による詳細情報の取得
platformモジュールにはOS名以外にも様々な情報を得ることが可能ですが、platform.uname()を使用するとそれらの情報が格納されたuname_resultというオブジェクトを得ることができます。以下はWindowsマシンで実行した場合の結果です。
import platform ur = platform.uname() print(ur) # uname_result(system='Windows', node='DESKTOP-BIU2TIF', release='10', version='10.0.19042', machine='AMD64', processor='Intel64 Family 6 Model 158 Stepping 10, GenuineIntel') print(ur.system) # Windows print(ur.release) # 10 print(ur.processor) # Intel64 Family 6 Model 158 Stepping 10, GenuineIntel
printすると、OS、ネットワークノード名、バージョン、マシンアーキテクチャ等が表示されます。また、属性を指定するとそれぞれと値を取り出すことが可能です。
Windowsの種類
Windowsの場合、以下の関数を使用するとさらにバージョンやエディションを判別することが可能です。
- win32_ver:OS リリース、バージョン番号、CSD レベル (サービスパック)、OS タイプ (マルチ/シングルプロセッサー)のタプル
- win32_edition():Windows のエディションの文字列表現
- win32_is_iot():IoT エディションの場合True
以下はあるWindowsマシンで実行した場合の結果です。
import platform v = platform.win32_ver() print(v) # ('10', '10.0.19042', 'SP0', 'Multiprocessor Free') edition = platform.win32_edition() print(edition) # 'Professional' is_iot = platform.win32_is_iot() print(is_iot) # False
Macのバージョン
mac_verを使用するとMac OSのバージョン情報をタプルで得ることが可能です。以下はあるMacOSのマシンで実行した場合の結果です。
import platform vt = platform.mac_ver() print(vt) # ('10.15.6', ('', '', ''), 'x86_64')