wp231957 发表于 2023-4-17 13:22:42

求一段python代码

可以区分宿主os类型
其他的不需要,能区分win7   win10   win11
就行

isdkz 发表于 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"。

wp231957 发表于 2023-4-17 13:53:49

实际是10.0.22621.1555
该如何通用呢

wp231957 发表于 2023-4-17 14:10:42

isdkz 发表于 2023-4-17 13:26
你可以使用platform库来检测操作系统。以下是一个简单的示例:




另一版:10.0.22621.819

isdkz 发表于 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('.'))
            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 了。

wp231957 发表于 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('.'))
            if build_number < 22000:
                return 10
            else:
                return 11
      else:
            return 0
    else:
      return 0

在另一个py中import version
然后用version.get*****()   调用   
还需要注意什么吗

isdkz 发表于 2023-4-17 14:31:34

wp231957 发表于 2023-4-17 14:25
我这样当做一个包 使用没问题吧




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

      else:
            return 0
    else:
      return 0

wp231957 发表于 2023-4-17 14:32:55

isdkz 发表于 2023-4-17 14:31
没问题,如果你需要区分未知的windows版本和非windows的话,这两个返回值最好不要都是0

      else: ...

我使用环境没那么复杂
出现bug再改
页: [1]
查看完整版本: 求一段python代码