私はいくつかの Linux ツールに取り組んでおり、Windows へのインストールを防ぐ必要があります。これは、FHS に依存しているため、そのプラットフォームでは役に立たなくなるためです。関数は近いですが、platform.platform
文字列しか返しません。
残念ながら、信頼できる結果を得るためにその文字列で何を検索すればよいかわかりません。誰かが何を検索すればよいか知っていますか、または私がここで見逃している別の機能を誰かが知っていますか?
私はいくつかの Linux ツールに取り組んでおり、Windows へのインストールを防ぐ必要があります。これは、FHS に依存しているため、そのプラットフォームでは役に立たなくなるためです。関数は近いですが、platform.platform
文字列しか返しません。
残念ながら、信頼できる結果を得るためにその文字列で何を検索すればよいかわかりません。誰かが何を検索すればよいか知っていますか、または私がここで見逃している別の機能を誰かが知っていますか?
>>> import platform
>>> platform.system()
'Windows'
(単に 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 のものです。それらに依存しないでください。
私の Windows ボックスでは、 をplatform.system()
返します'Windows'
。
しかし、なぜあなたが気にするのかわかりません。技術的に実行するプラットフォームを制限したい場合は、ブラックリストではなくホワイトリストを使用します.
Win32/Win64
実際、Python の次のリリースでは、代わりにWindows
(ブラックリストの場合) と*nix
代わりにLinux
(ホワイトリストの場合) が使用される可能性があるため、技術的にはまったく行いません。
私のアドバイスは、要件が何であるかを簡単に述べることです。ユーザーがそれを無視することを選択した場合、それはユーザーの問題です。「FHS が見つかりません」というエラー メッセージが表示され、Windows で実行していることを認めた場合は、サポートされている構成ではないことを優しく指摘します。
あなたの顧客は、あなたのコードが機能するように Windows で FHS を実行するほど賢いかもしれません。彼らは、ソフトウェアの恣意的な制限と見なすものを理解する可能性は低いです。
これは、ソフトウェア開発者が毎日直面する問題です。大規模な組織であっても、すべてのプラットフォームと構成をサポートすることはできません。
>>> 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
これを試して:
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」とまったく同じです。
から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.