platform 是 Python 标准库中的一个模块,用于获取有关计算机和操作系统的信息。platform 模块还提供其他有关操作系统和计算机硬件的信息。本文主要介绍Python 使用 platform 判断检测操作系统平台的方法,以及相关示例代码。

1、操作系统平台

操作系统平台是计算机系统的基础软件,用于管理计算机的硬件和提供应用程序与硬件之间的接口。以下是一些常见的操作系统平台:

平台

描述

Windows

Microsoft Windows 操作系统,

包括 Windows 10、Windows 8、Windows 7、Windows XP 等。

不同版本有不同的特性和界面。

macOS

苹果公司的操作系统平台,用于 Macintosh 计算机。

包括 macOS Catalina、macOS Mojave、macOS High Sierra 等版本。

Linux

Linux 操作系统平台是一个开源的 Unix 操作系统。有许多不同的发行版,

如 Ubuntu、Fedora、Debian、CentOS、Red Hat Enterprise Linux 等。

Unix

Unix 是一个类 Unix 操作系统家族的通用术语,

包括商业版本如 IBM AIX、HP-UX,

以及开源版本如 FreeBSD 和 OpenBSD。

Android

Android 是用于移动设备

(如智能手机和平板电脑)的操作系统平台,

由 Google 开发。

iOS

iOS 是苹果公司用于 iPhone 和 iPad 等移动设备的操作系统平台。

Chrome OS

Google 的 Chrome OS 用于 Chromebook,

是一个基于浏览器的轻量级操作系统。

Windows Server

Microsoft Windows Server 是用于服务器环境的 Windows 操作系统平台。

BSD

BSD(Berkeley Software Distribution)是 Unix 的衍生版本,

包括 FreeBSD、OpenBSD 和 NetBSD。

Solaris

Solaris 是由甲骨文公司(Oracle Corporation)开发的 Unix 操作系统。

IBM i

IBM i(原名 AS/400 或 iSeries)是 IBM 开发的操作系统,

用于中小型企业的服务器。

z/OS

IBM z/OS 是用于 IBM 大型计算机(主机)的操作系统。

AIX

IBM AIX 是 IBM 开发的 Unix 操作系统,

用于 IBM POWER 架构的服务器。

2、platform模块

Python 的 platform 模块提供了一些函数和属性,用于获取有关操作系统和计算机硬件的信息。

方法/属性

说明

platform.system()

获取操作系统的名称,

例如 "Linux"、"Windows"、"Darwin"(macOS)等。

platform.python_version()

获取 Python 解释器的版本信息。

platform.machine()

获取计算机的硬件架构,

例如 "x86_64"、"AMD64"、"armv7l" 等。

platform.processor()

获取计算机的处理器信息,

例如 "x86_64"、"Intel64 Family 6 Model 142 Stepping 10, GenuineIntel" 等。

platform.uname()

获取一个包含有关操作系统、

计算机名称、版本号、发布、处理器等信息的命名元组。

platform.version()

获取操作系统的版本信息。

platform.linux_distribution()

获取 Linux 发行版的信息,

返回一个包含名称、版本和 ID 的元组。

platform.dist()

获取 Linux 发行版的信息,

返回一个包含名称、版本和 ID 的元组。

已弃用,建议使用

linux_distribution()

platform.win32_ver

(release='', version='', csd='', ptype='')

获取 Windows 版本的详细信息。

platform.mac_ver

(release='', version='', machine='')

获取 macOS 版本的详细信息。

platform.libc_ver

(executable=sys.executable, lib='', version='', chunksize=2048)

获取 C 库的版本信息。

platform.architecture

(executable=sys.executable, bits='', linkage='')

获取可执行文件的架构信息。

platform.dist()

(已弃用)

获取 Linux 发行版的信息。弃用,建议使用

linux_distribution()

platform.popen

(command, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

打开一个管道,并返回一个连接到管道的文件对象。

可以用于执行命令并捕获输出。

platform.arch

(属性)

获取 Python 解释器的构建架构信息,

例如 "64bit" 或 "32bit"。

3、使用示例

1)使用 platform

from platform import system

def detect_os():
    """Detect operating system.
    """

    # Inspired by:
    # https://github.com/scivision/pybashutils/blob/78b7f2b339cb03b1c37df94015098bbe462f8526/pybashutils/w...

    syst = system().lower()
    os = 'unknown'

    if 'cygwin' in syst:
        os = 'cygwin'
    elif 'darwin' in syst:
        os = 'mac'
    elif 'linux' in syst:
        os = 'linux'
        # detect WSL https://github.com/Microsoft/BashOnWindows/issues/423
        try:
            with open('/proc/version', 'r') as f:
                if 'microsoft' in f.read().lower():
                    os = 'wsl'
        except: pass
    elif 'windows' in syst:
        os = 'windows'
    elif 'bsd' in syst:
        os = 'bsd'

    return os
    
print(detect_os())

2)使用sys.platform

import sys

platform = sys.platform

if platform == 'linux' or platform == 'linux2':
    print("Linux system.")
elif platform == 'darwin':
    print("macOS (Mac OS X).")
elif platform == 'win32' or platform == 'win64':
    print("Windows system.")
else:
    print(f"unknown")

4、Python其它与操作系统有关的模块

1)os模块

函数/属性描述
os.sep取代操作系统特定的路径分割符
os.name字符串指示正在使用的平台
os.getcwd()得到当前工作目录的路径
os.getenv(), os.putenv()用来读取和设置环境变量
os.listdir()返回指定目录下的所有文件和目录名
os.remove()用来删除一个文件
os.system()用来运行shell命令
os.linesep给出当前平台使用的行终止符
os.path.split()返回一个路径的目录名和文件名
os.path.isfile(), os.path.isdir()检验路径是文件还是目录
os.path.exists()检验给出的路径是否存在
os.listdir(dirname)列出dirname下的目录和文件
os.curdir返回当前目录(.
os.chdir(dirname)改变工作目录到dirname
os.path.isdir(name)判断name是不是一个目录
os.path.isfile(name)判断name是不是一个文件
os.path.getsize(name)获得文件大小,如果name是目录返回0L
os.path.abspath(name)获得绝对路径
os.path.normpath(path)规范path字符串形式
os.path.split(name)分割文件名与目录
os.path.splitext()分离文件名与扩展名
os.path.join(path, name)连接目录与文件名或目录
os.path.basename(path)返回文件名
os.path.dirname(path)返回文件路径

2)sys模块

函数/属性描述
sys.argv实现从程序外部向程序传递参数
sys.exit([arg])程序中间的退出,arg=0为正常退出
sys.getdefaultencoding()获取系统当前编码,一般默认为ascii
sys.setdefaultencoding()设置系统默认编码,通常在启动时设置
sys.getfilesystemencoding()获取文件系统使用编码方式
sys.path获取指定模块搜索路径的字符串集合
sys.platform获取当前系统平台
sys.stdin对应标准输入流的流对象
sys.stdout对应标准输出流的流对象
sys.stderr对应标准错误流的流对象

推荐文档