我正在阅读的书在python3中显示sys.platform
,在Windows上运行正常,但在Linux中,即使我的内核是Linux3,我仍然会回到“Linux2”。
在StackOverflow上搜索我看到有人提到platform.system
和os.name
。第一个将告诉你Linux / Windows但不是什么版本,后者为你提供了NT / Posix中的技术名称。
我有点困惑,这是经验python编码器使用的最准确和首选的方法。是否有可能获得“windows7”或Linux3?
非常感谢。 PS。仍然是stackoverflow的新手,希望能正确地格式化我的问题。
答案 0 :(得分:14)
你不应该依赖这个数字,因为正如你所指出的那样,它是不一致的。它实际上显示了编译Python的系统上的主要内核版本。
此外,它已在Python 3.3中删除:
issue 12326:在Linux上,sys.platform不再包含主要版本。它现在总是'linux',而不是'linux2'或'linux3',具体取决于用于构建Python的Linux版本。如果您不需要支持较旧的Python版本,请将
sys.platform == 'linux2'
替换为sys.platform.startswith('linux')
,或直接sys.platform == 'linux'
。
- What's New In Python 3.3»Porting Python code
另请参阅:sys.platform
因此,找出系统是否为Linux的首选方法是sys.platform.startswith('linux')
。它适用于所有版本的Python和Linux。
似乎没有办法在标准库中更准确地找到操作系统名称。
答案 1 :(得分:0)
查看这里的文档,它既解释了为什么'linux2'以及如何以向后兼容的方式对待它:
https://docs.python.org/2/library/sys.html
版本2.7.3中更改:由于大量代码检查sys.platform == 'linux2',Linux 2.x和3.x之间没有必要的变化, sys.platform总是设置为'linux2',即使在Linux 3.x上也是如此。在Python 3.3中 然后,该值将始终设置为“linux”,因此建议使用 始终使用startswith ...