【问题标题】:Python 2.7, OS Detection return valuesPython 2.7,操作系统检测返回值
【发布时间】:2023-05-28 16:39:01
【问题描述】:

我正在开发跨平台实用程序,该实用程序涉及驱动器扫描和为运行它的操作系统自动创建 shell/批处理文件。不幸的是,我找不到一个简单的答案。 如这些链接中所述:

  1. When to use os.name, sys.platform, or platform.system?
  2. Reliably detect Windows in Python
  3. Extract file name from path, no matter what the os/path format
  4. Python: What OS am I running on?
  5. http://docs.python.org/library/platform.html#module-platform

各种platform.system()、platform.platform()、sys.platform、os.name()等都面临着未来未必完美的问题。也就是说,如果操作系统开发人员稍作改动,这些可能不起作用(至少在修补或修改之前)。因此,显然最好的解决方案是尝试上述每个方法的一小部分,同时使用 call() 定位一些特定于操作系统的可执行文件。

这留下了我的问题: 由于确定这一点的最佳方法涉及 platform.system、sys.platform 和 os.name(假设只需要通用识别),这些程序的各种可能输出是什么?这些模块中的每一个的 docs.python.org 部分仅列出了一些,并且这些页面并不完全是最新的。具体来说,我想知道最后三个 Mac OS、Win XP-Win 8 上的可能输出,并且只知道 Linux 满足了我的需求。有谁知道输出是什么或我在哪里可以找到它们?

提前致谢。

澄清: 我在这里寻找的是当前已知的值,以便我可以将它们合并到现有项目中,着眼于将来的代码修订变得更容易。所以 CURRENT 返回值是我正在寻找的(最后 3 代 Mac OS* 和 Win * 因为除此之外可能不再使用)

【问题讨论】:

    标签: python operating-system cross-platform python-2.7 detection


    【解决方案1】:

    编辑:对于所有可能的返回值的具体问题:

    • * answer 相关的来自 sys.platform 的可能值?
    • Post with the answers指向上方:

      aix3 aix4 atheos beos5 darwin freebsd2 freebsd3 freebsd4 freebsd5
      freebsd6 freebsd7 generic irix5 irix6 linux2 mac netbsd1 next3 os2emx
      riscos sunos5 unixware7
      
    • 还有:

      linux3, freebsd8, win32, dos, os2
      

      和其他人。

    • (他们是asking the same question in Aug 2006。)

    注意:

    正如其他人所指出的,sys.platform 源自 系统供应商提供他们的系统。

    /编辑。


    不确定是否有可能拥有如此未来的东西-完美。如果您只想了解操作系统(mac/win/linux),请查看sys.platform 的示例。

    此外,如果您在未来看到很多变化(每个操作系统每年一次),将事物保存在像 get_os_name 这样的单独函数中可以让您控制或映射输入输出?与您提到的其他功能结合起来也很方便。因此,您可以返回一个基于 (os_name, 32/64bit, variant) 的元组(其中变体是 XP、Win8、Darwin 等),具体取决于它如何影响您的脚本。

    这些模块中的每一个的 docs.python.org 部分仅列出了一些,并且这些页面并不完全是最新的。

    不幸的是,这是真的。但同样,不可能考虑未来的环境或平台,甚至是所有当前的环境或平台。合乎逻辑的做法是确保它适用于您测试/开发的当前平台。

    【讨论】:

    • 你所说的都是真的,但显然我没有传达我的需要。我正在寻找当前已知的值,希望我可以编写代码以便于将来的更新。编辑帖子以更正此问题。
    • 在接下来的几周里,我只能使用我的 linux 机器。
    • @Jase 上面添加的当前已知值。
    • 显然我回去的还不够远!非常感谢!
    最近更新 更多