我正在研究跨平台实用程序,该实用程序涉及驱动器扫描以及为其运行的操作系统自动创建shell /批处理文件。不幸的是我找不到一个简单的答案。 如以下链接所述:
各种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个版本,因为可能已经不再使用了)
答案 0 :(得分:3)
修改:针对所有可能的返回值的具体问题:
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
和其他人。
注意:
正如其他人所指出的那样,sys.platform是从名称中派生出来的 系统供应商提供他们的系统。
/编辑。
不确定是否有可能拥有如此未来 - 完美。如果您只想了解操作系统(mac / win / linux),请参阅sys.platform的示例。
另外,如果你看到未来发生了很多变化 - 每个操作系统每年一次,那么将事物保存在像get_os_name
这样的单独函数中可以让你控制或映射输入输出?也可以方便地与您提到的其他功能结合使用。因此,您可以根据(os_name, 32/64bit, variant)
(其中变体是XP,Win8,Darwin等等)返回一个元组,具体取决于它对脚本的影响。
每个模块上的docs.python.org部分仅列出了一些,而且这些页面并不是最新的。
不幸的是真的。但同样,未来不可能考虑环境或平台,甚至所有当前的。合乎逻辑的做法是确保它适用于您已测试/开发的当前平台。