62

私はいくつかの Linux ツールに取り組んでおり、Windows へのインストールを防ぐ必要があります。これは、FHS に依存しているため、そのプラットフォームでは役に立たなくなるためです。関数は近いですが、platform.platform文字列しか返しません。

残念ながら、信頼できる結果を得るためにその文字列で何を検索すればよいかわかりません。誰かが何を検索すればよいか知っていますか、または私がここで見逃している別の機能を誰かが知っていますか?

4

6 に答える 6

88
>>> import platform
>>> platform.system()
'Windows'
于 2009-09-07T01:33:31.370 に答える
67

(単に Windows を検出するのではなく) Python から Cygwin を検出する方法を探してここに来た人のために、さまざまなプラットフォームからの戻り値の例をいくつか示しos.nameますplatform.system

OS/build     | os.name | platform.system() 
-------------+---------+-----------------------
Win32 native | nt      | Windows
Win32 cygwin | posix   | CYGWIN_NT-5.1*
Win64 native | nt      | Windows
Win64 cygwin | posix   | CYGWIN_NT-6.1-WOW64*
Linux        | posix   | Linux

この時点から、Windows ネイティブと Cygwin を区別する方法は明らかですが、これが将来の証明になるとは確信していません。

* バージョン番号はそれぞれ XP と Win7 のものです。それらに依存しないでください。

于 2011-10-03T16:18:44.180 に答える
16

私の Windows ボックスでは、 をplatform.system()返します'Windows'

しかし、なぜあなたが気にするのかわかりません。技術的に実行するプラットフォームを制限したい場合は、ブラックリストではなくホワイトリストを使用します.

Win32/Win64実際、Python の次のリリースでは、代わりにWindows(ブラックリストの場合) と*nix代わりにLinux(ホワイトリストの場合) が使用される可能性があるため、技術的にはまったく行いません。

私のアドバイスは、要件が何であるかを簡単に述べることです。ユーザーがそれを無視することを選択した場合、それはユーザーの問題です。「FHS が見つかりません」というエラー メッセージが表示され、Windows で実行していることを認めた場合は、サポートされている構成ではないことを優しく指摘します。

あなたの顧客は、あなたのコードが機能するように Windows で FHS を実行するほど賢いかもしれません。彼らは、ソフトウェアの恣意的な制限と見なすものを理解する可能性は低いです。

これは、ソフトウェア開発者が毎日直面する問題です。大規模な組織であっても、すべてのプラットフォームと構成をサポートすることはできません。

于 2009-09-07T01:32:49.250 に答える
12
>>> import os
>>> os.name
'nt'

"インポートされたオペレーティング システム依存モジュールの名前。現在、次の名前が登録されています: 'posix'、'nt'、'mac'、'os2'、'ce'、'java'、'riscos'." (c) http://docs.python.org/library/os.html#os.name

import os
if os.name == 'nt':
    #yourcodehere
于 2011-02-01T17:23:47.043 に答える
11

これを試して:

import platform

if platform.system() == "Darwin":
    # Don't have Windows handy, but I'd expect "Win32" or "Windows" for it

編集:あなたが試したことを見ましたplatform.platform()...platform.system()この場合はうまくいくでしょう。私を信じて、使ってください。暗いコーナーは、プラットフォームの検出にあります。

distutilsあなたがそれをうまく頼めば、これもやります。

os.path.exists()Windows ファイルのように何か悪いことを常に行うことができます...しかしplatform、Python 標準ライブラリで得られるのと同じくらい信頼性があります。

編集2:指摘された別の役立つ回答者platform.system()は、彼のWindowsマシンの「Windows」とまったく同じです。

于 2009-09-07T01:31:03.567 に答える
1

からhelp(platform)

system()
    Returns the system/OS name, e.g. 'Linux', 'Windows' or 'Java'.

    An empty string is returned if the value cannot be determined.
于 2010-08-12T15:24:22.607 に答える