273

プラットフォームモジュールを見つけましたが、マシン上で「Windows」が返され、「Microsoft」が返されると表示されます。ここにあるstackoverflowの別のスレッドで、「Vista」が返されることがあります。

それで、問題は、どのように実装するかということです。

if isWindows():
  ...

上位互換性のある方法で?「Vista」のようなものをチェックする必要がある場合、次のバージョンのWindowsが出たときに壊れます。


注:これが重複した質問であると主張する回答は、実際には質問に回答しませんisWindows。彼らは「どのプラットフォーム」という質問に答えます。多くの種類のウィンドウが存在するため、それらのどれもがの答えを得る方法を包括的に説明していませんisWindows

4

5 に答える 5

431

PythonOSモジュール_

特にPython3.6/ 3.7の場合:

os.name:インポートされたオペレーティングシステムに依存するモジュールの名前。現在、次の名前が登録されています:'posix'、'nt'、'java'。

あなたの場合、os.name出力として「nt」をチェックしたいとします。

import os

if os.name == 'nt':
     ...

に関する注記もありますos.name

sys.platformより細かい粒度も参照してください。os.uname()システムに依存するバージョン情報を提供します。

プラットフォームモジュールは、システムのIDの詳細なチェックを提供します。

于 2009-08-25T01:17:59.370 に答える
68

使用していplatform.systemますか?

システム()
        システム/OS名を返します(例:「Linux」、「Windows」、「Java」)。

        値を判別できない場合は、空の文字列が返されます。

それが機能しない場合は、試しplatform.win32_verてみてください。例外が発生しない場合は、Windowsを使用しています。しかし、名前に32が含まれているため、64ビットとの上位互換性があるかどうかはわかりません。

win32_ver(release =''、version =''、csd =''、ptype ='')
        Windowsレジストリから追加のバージョン情報を取得します
        バージョンを参照するタプル(version、csd、ptype)を返します
        番号、CSDレベル、OSタイプ(マルチ/シングル
        プロセッサ)。

しかしos.name、他の人が述べているように、おそらくそれが進むべき道です。


その価値について、platform.pyでWindowsをチェックする方法をいくつか紹介します。

if sys.platform == 'win32':
#---------
if os.environ.get('OS','') == 'Windows_NT':
#---------
try: import win32api
#---------
# Emulation using _winreg (added in Python 2.0) and
# sys.getwindowsversion() (added in Python 2.3)
import _winreg
GetVersionEx = sys.getwindowsversion
#----------
def system():

    """ Returns the system/OS name, e.g. 'Linux', 'Windows' or 'Java'.    
        An empty string is returned if the value cannot be determined.   
    """
    return uname()[0]
于 2009-08-25T01:22:43.247 に答える
48

os.nameに依存できるはずです。

import os
if os.name == 'nt':
    # ...

編集:これを行う最も明確な方法は、他の回答と同様に、プラットフォームモジュールを使用することです。

于 2009-08-25T01:18:46.497 に答える
35

sysでも:

import sys
# its win32, maybe there is win64 too?
is_windows = sys.platform.startswith('win')
于 2009-08-25T01:21:45.713 に答える
15
import platform
is_windows = any(platform.win32_ver())

また

import sys
is_windows = hasattr(sys, 'getwindowsversion')
于 2014-04-02T18:33:57.040 に答える