2009-11-22 6 views
19

私のアプリケーションは、Mac OS Xシステムで動作しているものとします。しかし、私がしなければならないのは、実行しているMac OS(またはDarwin)のバージョンを、できるだけ数字として把握することです。例えば、Pythonを使ってMac OSのバージョンを検出する方法は?

  • "10.4.11" は、いずれか返す10.4または8
  • は "10.5.4" が10.5または9
  • "10.6" を返す10.6または10

を返しますこれを行うためのクリーンな方法があり、またはプルする少なくとも方法

import os 
os.system("uname -r") 

:私はあなたが私のシステム上で「8.11.0」を返すこれを行うことができることが分かりました結果の最初の数字?ありがとう!が、それは10.x.yを操作するために非常に簡単です - (!数に'10 .5.8' を作るのは難しい)

答えて

38
>>> import platform 
>>> platform.mac_ver() 
('10.5.8', ('', '', ''), 'i386') 

ご覧のとおり、タプルmac_verリターンの最初の項目は、文字列ではなく、数ありますあなたが望む種類の数字に文字列を変換します。あなたはダーウィンのカーネルバージョンではなく、MacOSXのバージョンを好む場合は例えば、

>>> v, _, _ = platform.mac_ver() 
>>> v = float('.'.join(v.split('.')[:2])) 
>>> print v 
10.5 

は、それはまた、アクセスするのは簡単です - platform.uname()で返されるタプルの3番目の項目です同様形式の文字列を使用します。

+0

+1簡単です –

+0

それは最高です!ご協力いただきありがとうございます! –

+0

残念ながら、これはDebian(とおそらく他のLinux)でも動作します。この機能を使ってこのシステムがMac OS Xであるかどうかを確認すると間違った結果が出る –

0

「uname」のようなコマンドを実行し、結果を文字列として取得する場合は、subprocess moduleを使用してください。

import subprocess 
output = subprocess.Popen(["uname", "-r"], stdout=subprocess.PIPE).communicate()[0] 
1

/usr/bin/sw_versコマンドの出力を解析できます。

+0

unameコマンドでバージョンがわかります。この値を変数に代入する。 –

+0

少なくとも、カーネルのバージョンを提供しますが、コマンド出力を変数に読み込むことができるという全体的な問題があるようです。 –

2

すでにOSを使用している場合、あなたはos.unameを(使用する場合があります)

import os 
os.uname() 
1

platform.mac_ver()だから、Macをはじめよう機械

、VERSIONINFO、リリース(タプルを返します。コード

>>> platform.mac_ver()[0] 

'10.8.4' 

によってバージョンこのメソッドがplatform` `ため

関連する問題