私の知る限り、Python には実行されているオペレーティング システムを確認する方法が 3 つあります。
os.name
sys.platform
platform.system()
この情報を知っていると、条件付きインポートや、プラットフォーム間で異なる機能 ( time.clock()
Windows とtime.time()
UNIX など) を使用する場合に役立つことがよくあります。
私の質問は、なぜこれを行うのに 3 つの異なる方法があるかということです。ある方法を使用し、別の方法を使用しないのはどのような場合ですか? どの方法が「最良」ですか (最も将来性があるか、またはプログラムが実際に実行できる特定のシステムを誤って除外する可能性が最も低いか)?
sys.platform
は よりも具体的であるため、 (単なる ではなく)と、(単なる ではなく)をos.name
区別できるようです。しかし、そうだとすると、との違いは何でしょうか。win32
cygwin
nt
linux2
darwin
posix
sys.platform
platform.system()
たとえば、これはどちらが良いでしょうか:
import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff
それともこれ?:
import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff
今のところは に固執するつもりなsys.platform
ので、この質問は特に緊急ではありませんが、これに関して何らかの説明をしていただければ幸いです。
ベストアンサー1
ソースコードを少し調べてみました。
sys.platform
およびの出力はos.name
コンパイル時に決定されます。platform.system()
は実行時にシステム タイプを決定します。
sys.platform
ビルド構成中にコンパイラ定義として指定されます。os.name
特定の OS 固有のモジュールが利用可能かどうかを確認します (例posix
: 、、nt
...)platform.system()
実際に実行されuname
、実行時にシステム タイプを決定する他のいくつかの機能も実行されます。
私のおすすめ:
os.name
POSIX 準拠のシステムかどうかを確認するために使用します。sys.platform
Linux、cygwin、darwin、atheos などかどうかを確認するために使用します。platform.system()
他の情報源が信じられない場合に使用してください。