[解決!Python]プログラムを実行しているプラットフォームを判別するには解決!Python

osモジュールのname属性や、sysモジュールのplatform属性、platformモジュールのplatform関数などを使って、プログラムを実行しているプラットフォームを判別する方法を紹介する。

» 2023年09月26日 05時00分 公開
[かわさきしんじDeep Insider編集部]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「解決!Python」のインデックス

連載目次

属性/関数 説明
os.name属性 'posix'/'nt'/'java'のいずれかが返される
os.uname関数 OS名/マシン名/OSのリリース/OSバージョン/ハードウェア識別子が返される。Unix環境でのみ使用可能
sys.platform属性 プログラムを実行中のプラットフォームを識別する文字列が返される。'emscripten'/'linux'/'wasi'/'win32'/'cygwin'/'darwin'など。バージョンが末尾に付加される場合もある
platform.platform関数 プログラムを実行中のプラットフォームを識別する文字列が返される。sys.platform属性よりも多くの情報を含む
プラットフォームを判別するために使える属性/関数

プラットフォームを判別するために使える属性/関数

 Pythonではプログラムを実行しているOS/プラットフォームを判別するために幾つかのモジュールでさまざまな属性や関数が提供されている。

  • osモジュール:os.name属性とos.uname関数
  • sysモジュール:sys.platform属性
  • platformモジュール:platform.platform属性

 これらのうち、os.uname関数についてはUnix環境でのみ使用可能であり、Windows環境には提供されていないことには注意しよう。

os.name属性とos.uname関数

 プログラムを実行しているのがWindows環境かUnix環境(POSIX環境)かを知るだけであれば、os.name属性を用いるのが簡単だ。

import os

if os.name == 'posix':
    print('in posix')
elif os.name == 'nt':
    print('in windows')
else:
    print('another')


 macOSとWindowsで上記コードを実行すると(もちろん)次のような結果となる。

macOSでの実行結果 macOSでの実行結果

Windowsでの実行結果 Windowsでの実行結果

 より詳細な情報を得る必要があれば、os.uname関数が使えるが、既に述べた通り、これはUnix系統のOSでのみ使用可能であることには注意が必要だ。

 os.uname関数は以下の5つの情報を含むposix.uname_resultオブジェクトを返送する。以下の情報はタプルもしくは箇条書きに示した属性名を使用してアクセスできる。タプルの要素としてアクセスする場合は、以下の箇条書きの上から0番目、1番目、……のようになっている。

  • sysname属性:OS名
  • nodename属性:プログラムを実行しているマシンのネットワーク上でのマシン名
  • release属性:OSのリリースバージョン
  • version属性:OSのバージョン
  • machine属性:ハードウェア識別子

 使用例を以下に示す。

import os

info = os.uname()
print(info.sysname)  # OS名を表示
print(info[3])  # OSのバージョンを表示


 これをmacOS環境で実行した結果を以下に示す。

macOSでの実行結果 macOSでの実行結果

sys.platform属性

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。