2

私は、ドライブのスキャンと、それが実行される OS 用のシェル/バッチ ファイルの自動作成を含むクロス プラットフォーム ユーティリティに取り組んでいます。残念ながら、私は1つの簡単な答えを見つけることができません. これらのリンクに記載されているように:

  1. os.name、sys.platform、または platform.system をいつ使用するか?
  2. Python で Windows を確実に検出する
  3. os/path 形式に関係なく、パスからファイル名を抽出します
  4. Python: 実行している OS は?
  5. およびhttp://docs.python.org/library/platform.html#module-platformで

さまざまな platform.system()、platform.platform()、sys.platform、os.name() などはすべて、必ずしも将来的に完全であるとは限らないという問題を抱えています。つまり、OS 開発者が少し変更した場合、これらは機能しない可能性があります (少なくともパッチが適用されるか改訂されるまで)。したがって、明らかに最善の解決策は、call() を使用して OS 固有の実行可能ファイルをターゲットにするとともに、上記のそれぞれのごく一部を試すことです。

これを判断する最善の方法には、platform.system、sys.platform、および os.name が含まれるため (一般化された認識のみが必要であると仮定)、これらのプログラムのさまざまな可能な出力は何ですか? これらの各モジュールの docs.python.org セクションには、いくつかがリストされているだけであり、ページは最新のものではありません。具体的には、最後の 3 つの Mac OS である Win XP-Win 8 で可能な出力を知りたいです。Linux を知っているだけで、そこでのニーズがカバーされます。出力が何であるか、またはどこでそれらを見つけることができるか知っている人はいますか?

前もって感謝します。

明確化: ここで探しているのは、現在既知の値であるため、既存のプロジェクトにそれらを組み込むことができ、将来のコードの改訂が容易になることを念頭に置いています。したがって、CURRENT の戻り値は私が求めているものです (Mac OS* と Windows の最後の 3 世代 * それ以降はおそらくあまり使用されていないため)。

4

1 に答える 1

3

編集:すべての可能な戻り値の特定の質問について:

ノート:

他の人が示したように、sys.platform は、システム ベンダーがシステムに付けた名前に由来します。

/編集。


これほど将来性に優れたものを手に入れることができるかどうかはわかりません。OS (mac/win/linux) のみを知りたい場合は、sys.platformの例を参照してください。

get_os_nameまた、 OSごとに1年に1回、将来多くの変更が見られる場合に、入出力を制御またはマッピングできるように、別の機能に物事を保持しますか? あなたが言及した他の機能と組み合わせるのも便利です。(os_name, 32/64bit, variant)そのため、スクリプトへの影響に応じて (バリアントは XP、Win8、Darwin など) に基づいてタプルを返すことができます。

これらの各モジュールの docs.python.org セクションには、いくつかがリストされているだけであり、ページは最新のものではありません。

残念ながら本当です。しかし、繰り返しますが、将来の環境やプラットフォーム、さらには現在のすべての環境やプラットフォームを説明することは不可能です. 論理的なことは、テスト/開発した現在のプラットフォームで動作することを確認することです。

于 2012-09-10T11:14:34.057 に答える