pythonプログラムを作成していると、OS制限が稀にあります。
pythonプログラム上でOSの種類やバージョンを取得する方法をご紹介したいと思います。
OSが取得できれば、OSごとに処理を変えるなど、制限に合わせた対応がとれるようになります。
OSの種類を取得するには、いくつか方法があります。
モジュールごとに3種類ご紹介したいと思います。
・「platform」モジュール
・「os」モジュール
・「sys」モジュール
「platform」を使う場合
まずは「platform」モジュールを使うサンプルをご紹介します。
import platform
system = platform.system()
print(f"platform: {system}")
こちらの実行結果は次のようになります。
# Windows10の場合
platform: Windows
#ラズパイ DebianOSの場合
platform: Linux
WIndowsかLinuxかぐらいまでは判別することができます。
「os」を使う場合
次は「os」モジュールです。
import os
print(f"os: {os.name}")
# "posix":LinuxまたはmacOS
# "nt": Windows
実行結果は次のようになります。
# Windows10の場合
os: nt
#ラズパイ DebianOSの場合
os: posix
どちらも馴染みの薄い表現になりました。
Windows NT(New Technology)が初めて登場したのは1993年です。
Windows 3.1やWindows 95などの旧世代のWindowsとは異なり、新しいカーネルとアーキテクチャを採用し、プロフェッショナル向けの高度な機能と安定性を提供することを目指して設計された、ということです。
バージョンアップに伴い、Windows NTはWindows 2000、Windows XP、Windows Vista、Windows 7などのバージョンとして展開されました。
その後、Windows 8やWindows 10もWindows NTの系統に属しています。
ということで今のWindowsにも「nt」が出てくるんですね。
POSIX(Portable Operating System Interface)は、
UNIX系オペレーティングシステムの互換性と移植性を確保するための規格です。
UNIXのAPIやコマンド群を定義し、ファイルシステム、プロセス制御、ネットワーキングなどの基本機能を統一的なインターフェースで提供するものです。
LinuxやmacOSなど多くのUNIX系OSがPOSIXに準拠しており、クロスプラットフォーム開発に役立っています。
ということで、LinuxまたはmacOSの場合に「posix」という戻り値が返ってきます。
「sys」を使う場合
次は「sys」モジュールを使ってみましょう。
import sys
print(f"sys: {sys.platform}")
# "linux": Linux
# "darwin": macOS
# "win32": Windows
次のような実行結果になります。
# Windowsの場合
sys: win32
#ラズパイ DebianOSの場合
sys: linux
Win32は、Microsoft Windowsオペレーティングシステム向けのAPI(Application Programming Interface)のセットです。
ウィンドウの作成、ファイル操作、ネットワーキングなど、Windowsアプリケーション開発に使用されます。C/C++などで利用され、Windowsの機能にアクセスする手段を提供し、ユーザーインターフェースやリソース管理を可能にします。Win32 APIは、Windowsのバージョンアップに伴い進化し、Windows NTや後続のWindowsバージョンにも対応しています。
ということで、「platform」、「os」、「sys」モジュールそれぞれでOS種別を取得してみました。
普通に考えるOS以外に、分類されるべき規格があり、
それぞれのモジュールで異なるものを判別して取得しているようです。
一般的にOSと呼んで期待する答えに近いのが「platform」になります。
もう少し詳しく見ていきたいと思います。
細かく取得したい場合のおすすめは「platform」
一般的にOSと呼んで期待する答えに近いのが「platform」という結果でした。
もう一段掘り下げて情報を取得してみたいと思います。
import platform
system = platform.system()
if system == "Windows":
version = platform.release()
print("Windows バージョン:", version)
elif system == "Linux":
distro = platform.dist()
print("Linux ディストリビューション:", distro[0])
print("バージョン:", distro[1])
elif system == "Darwin":
version = platform.mac_ver()
print("macOS バージョン:", version[0])
else:
print("未知のオペレーティングシステムを使用しています。")
上記は「platform」モジュールを使って、OS種別、ディストリビューション、バージョンを取得するサンプルコードです。
実行すると次のような結果になります。
# Windows10の場合
Windows バージョン: 10
#ラズパイ DebianOSの場合
Linux ディストリビューション: debian
バージョン: 10.9
Linuxの場合、UbuntuやDebianなどディストリビューションまで取得することができました。
以上、pythonプログラム上でOSの種類やバージョンを取得する方法をご紹介しました。
この記事が少しでもお役に立てれば幸いです。
それでは、ここまで読んで頂きありがとうございました!