鱼C论坛

 找回密码
 立即注册
查看: 2277|回复: 7

[已解决]求一段python代码

[复制链接]
发表于 2023-4-17 13:22:42 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
可以区分宿主os类型
其他的不需要,能区分win7   win10   win11
就行
最佳答案
2023-4-17 13:26:53
你可以使用platform库来检测操作系统。以下是一个简单的示例:
import platform

def get_os_version():
    os_type = platform.system()
    if os_type == 'Windows':
        os_version = platform.version()
        if os_version.startswith('6.1'):
            return 'Windows 7'
        elif os_version.startswith('10.0'):
            return 'Windows 10'
        elif os_version.startswith('10.0.22000'):
            return 'Windows 11'
        else:
            return 'Unknown Windows version'
    else:
        return 'Not a Windows operating system'

os_version = get_os_version()
print(f'当前操作系统: {os_version}')

这段代码首先导入platform库,然后使用platform.system()函数来检测操作系统类型。如果是Windows操作系统,它将使用platform.version()函数来获取操作系统的版本信息,并根据版本号来区分Windows 7、Windows 10和Windows 11。如果无法识别版本号,它将返回 "Unknown Windows version"。如果不是Windows操作系统,它将返回 "Not a Windows operating system"。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-17 13:26:53 | 显示全部楼层    本楼为最佳答案   
你可以使用platform库来检测操作系统。以下是一个简单的示例:
import platform

def get_os_version():
    os_type = platform.system()
    if os_type == 'Windows':
        os_version = platform.version()
        if os_version.startswith('6.1'):
            return 'Windows 7'
        elif os_version.startswith('10.0'):
            return 'Windows 10'
        elif os_version.startswith('10.0.22000'):
            return 'Windows 11'
        else:
            return 'Unknown Windows version'
    else:
        return 'Not a Windows operating system'

os_version = get_os_version()
print(f'当前操作系统: {os_version}')

这段代码首先导入platform库,然后使用platform.system()函数来检测操作系统类型。如果是Windows操作系统,它将使用platform.version()函数来获取操作系统的版本信息,并根据版本号来区分Windows 7、Windows 10和Windows 11。如果无法识别版本号,它将返回 "Unknown Windows version"。如果不是Windows操作系统,它将返回 "Not a Windows operating system"。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-17 13:53:49 From FishC Mobile | 显示全部楼层
实际是10.0.22621.1555
该如何通用呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-17 14:10:42 | 显示全部楼层
isdkz 发表于 2023-4-17 13:26
你可以使用platform库来检测操作系统。以下是一个简单的示例:

另一版:10.0.22621.819
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-17 14:16:04 | 显示全部楼层
wp231957 发表于 2023-4-17 14:10
另一版:10.0.22621.819

可以通过检查操作系统的内部版本号(也称为 "build number")来解决这个问题。

代码修改如下:
import platform

def get_os_version():
    os_type = platform.system()
    if os_type == 'Windows':
        os_version = platform.version()
        if os_version.startswith('6.1'):
            return 'Windows 7'
        elif os_version.startswith('10.0'):
            build_number = int(os_version.split('.')[2])
            if build_number < 22000:
                return 'Windows 10'
            else:
                return 'Windows 11'
        else:
            return 'Unknown Windows version'
    else:
        return 'Not a Windows operating system'

os_version = get_os_version()
print(f'当前操作系统: {os_version}')

在这个修正后的代码中,将 Windows 操作系统的版本信息分割成三部分,然后将内部版本号转换为整数。

之后,检查内部版本号是否小于 22000。如果小于 22000,则认为是 Windows 10;否则,认为是 Windows 11。

这样我们就可以正确区分 Windows 10 和 Windows 11 了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-17 14:25:44 | 显示全部楼层
isdkz 发表于 2023-4-17 14:16
可以通过检查操作系统的内部版本号(也称为 "build number")来解决这个问题。

代码修改如下:

我这样当做一个包 使用没问题吧
import platform

def get_os_version():
    os_type = platform.system()
    if os_type == 'Windows':
        os_version = platform.version()
        if os_version.startswith('6.1'):
            return 7
        elif os_version.startswith('10.0'):
            build_number = int(os_version.split('.')[2])
            if build_number < 22000:
                return 10
            else:
                return 11
        else:
            return 0
    else:
        return 0

在另一个py中  import version
然后用version.get*****()   调用     
还需要注意什么吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-17 14:31:34 | 显示全部楼层
wp231957 发表于 2023-4-17 14:25
我这样当做一个包 使用没问题吧

没问题,如果你需要区分未知的windows版本和非windows的话,这两个返回值最好不要都是0

        else:
            return 0
    else:
        return 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-17 14:32:55 From FishC Mobile | 显示全部楼层
isdkz 发表于 2023-4-17 14:31
没问题,如果你需要区分未知的windows版本和非windows的话,这两个返回值最好不要都是0

        else: ...

我使用环境没那么复杂
出现bug再改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-29 09:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表