python3 platform.mac_ver()获取的系统版本与macOS的版本不一致

问题描述

最近在使用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))

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值