Python 2.7,OS检测返回值

时间:2012-09-10 09:44:51

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

我正在研究跨平台实用程序,该实用程序涉及驱动器扫描以及为其运行的操作系统自动创建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
  6. 各种platform.system(),platform.platform(),sys.platform,os.name()等等都面临着未来不一定完美的问题。也就是说,如果OS开发人员稍微改变一下,这些可能不起作用(至少在修补或修改之前)。因此,显然最好的解决方案是尝试上述每一项的一小部分,同时使用call()定位一些特定于操作系统的可执行文件。

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

    提前致谢。

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

1 个答案:

答案 0 :(得分:3)

修改:针对所有可能的返回值的具体问题:

注意:

  

正如其他人所指出的那样,sys.platform是从名称中派生出来的   系统供应商提供他们的系统。

/编辑。


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

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

  

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

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