PythonでOSの種類を判定

作成しているコードによってはOSの種類やバージョン、エディションで処理を変えたい場合がでてくるかもしれません。このページではPython実行中にOSの種類を判定する方法について解説します。

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')