问题描述
最近在使用platform.mac_ver()这个方法时候,发现返回的mac系统版本和真实的系统版本不一致,代码如下:
import platform
macos_version_str = platform.mac_ver()[0]
print(macos_version_str)
返回值为:
但是电脑的实际版本是12.7.1
分析
当我们查看platform的mac_ver()方法源代码时候,发现获取mac系统版本信息是通过解析/System/Library/CoreServices/SystemVersion.plist
此文件来获取版本的
源文件代码如下:
那么此文件是什么内容呢,我们用bash来读取文件,可以看到系统版本为12.7.1
但是不管使用python3或者ipython去获取版本均得到以下结果,版本为10.16
原因
看起来在某些电脑上11及以后的系统会遇到这种问题,也许某一版本系统会修复此问题
解决方案
直接在python3中调用bash的命令
import re
p = subprocess.Popen("sw_vers", stdout=subprocess.PIPE)
result = p.communicate()[0].decode("ASCII")
sw_ver = re.compile(r"ProductVersion:\s(.*)").search(result)
print(sw_ver.group(1))