os.name、sys.platform、platform.system はいつ使用すればよいですか? 質問する

os.name、sys.platform、platform.system はいつ使用すればよいですか? 質問する

私の知る限り、Python には実行されているオペレーティング システムを確認する方法が 3 つあります。

  1. os.name
  2. sys.platform
  3. platform.system()

この情報を知っていると、条件付きインポートや、プラットフォーム間で異なる機能 ( time.clock()Windows とtime.time()UNIX など) を使用する場合に役立つことがよくあります。

私の質問は、なぜこれを行うのに 3 つの異なる方法があるかということです。ある方法を使用し、別の方法を使用しないのはどのような場合ですか? どの方法が「最良」ですか (最も将来性があるか、またはプログラムが実際に実行できる特定のシステムを誤って除外する可能性が最も低いか)?

sys.platformは よりも具体的であるため、 (単なる ではなく)と、(単なる ではなく)をos.name区別できるようです。しかし、そうだとすると、との違いは何でしょうか。win32cygwinntlinux2darwinposixsys.platformplatform.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.namePOSIX 準拠のシステムかどうかを確認するために使用します。
  • sys.platformLinux、cygwin、darwin、atheos などかどうかを確認するために使用します。
  • platform.system()他の情報源が信じられない場合に使用してください。

おすすめ記事