• Python 常用基础模块(四):sys模块


    一、sys模块介绍

    1.1 什么是 Python 解释器

    当编写 Python 代码时,通常都会得到一个包含 Python 代码的以 .py 为扩展名的文件。要运行编写的代码,就需要使用 Python 解释器去执行 .py 文件。因此,Python 解释器就是用来执行 Python 代码的一种工具。常见的 Python 解释器有以下几种:

    1. CPython:Python 的官方解释器。当我们从 Python 官方网站下载并安装好 Python 后,就直接获得了 CPython 解释器,该解释器是使用 C 语言开发的,所以叫 CPython。我们在 CMD 命令窗口中运行 python 命令就是启动 CPython 解释器,如下图所示:
      在这里插入图片描述
    2. IPython :IPython 是基于 CPython 之上的一个交互式解释器,它执行 Python 代码的功能和 CPython 是完全一样的,唯一的区别是:CPython 用 >>> 作为提示符,而 IPython 用 In[ 序号]: 作为提示符。
      在这里插入图片描述
    3. PyPy :PyPy 解释器的目标是执行速度,它采用 JIT 技术,对 Python 代码进行动态编译,所以可以显著提高 Python 代码的执行速度。
    4. Jython:运行在 Java 平台上的 Python 解释器,可以直接把 Python 代码编译成 Java 字节码执行。
    5. IronPython :运行在微软 .NET 平台上的 Python 解释器,可以直接把 Python 代码编译成 .NET 的中间代码。

    1.2 sys 模块的作用

    sys 模块提供访问 Python 解释器使用或维护的属性,以及与 Python 解释器进行交互的方法。简单来讲,sys 模块负责程序与 Python 解释器的交互,并提供了一系列的属性和方法,用于操控 Python 运行时的环境。

    在 Python 程序中使用 sys 模块,首先需要使用 import 导入,代码如下:

    import sys
    
    • 1

    导入 sys 模块后,就可以使用该模块提供的属性和方法了。

    二、常用方法及属性介绍

    2.1 modules属性——将模块名称映射到已加载模块的字典

    modules 属性返回一个将模块名称映射到已加载模块的字典。语法格式如下:

    sys.modules  # 返回值:返回一个字典
    
    • 1

    使用 modules 属性获取本机所有已安装的模块及所在模块文件,代码如下:

    import sys
    
    for key, value in sys.modules.items():  # 遍历所有模块字典
        print(f'{key}:{value}')  # 打印模块及所在模块文件
    
    • 1
    • 2
    • 3
    • 4

    程序运行结果如下:
    在这里插入图片描述
    使用 modules 属性获取 os 模块的来源,代码如下:

    import sys
    
    # <module 'os' from 'd:\\developsoftware\\python37\\lib\\os.py'>
    print(sys.modules["os"])
    
    • 1
    • 2
    • 3
    • 4

    使用 modules 对象的 keys() 方法可以获取到所有导入的模块列表,代码如下:

    import sys
    
    print('模块列表:')
    for i in sys.modules.keys():  # 遍历模块列表
        print('' + i)  # 打印模块
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.2 getdefaultencoding()方法——获取默认字符串编码名称

    getdefaultencoding() 方法用于返回当前默认字符串编码的名称,语法格式如下:

    sys.getdefaultencoding()
    
    • 1

    参数说明:返回值:返回类似 ascii、utf-8 或者 gbk 等的字符串,具体的值根据 site.py 模块中设置的默认编码而定。

    使用 getdefaultencoding() 方法获取本地 Python 解释器使用的默认字符串编码,代码如下:

    import sys
    
    print(sys.getdefaultencoding())  # utf-8
    
    • 1
    • 2
    • 3

    2.3 exit()方法——退出Python

    exit() 方法用于退出 Python 解释器,即退出正在运行的程序。语法格式如下:

    sys.exit([arg])
    
    • 1

    参数说明:

    1. arg :可选参数,该参数是一个整数,表示退出状态。0 表示正常退出,非 0 表示异常终止。如果指定为一个非整数值,则将它打印到 sys.stderr,并使用退出码 1。
    2. 返回值:返回退出码,0 表示正常退出,1 表示异常退出。

    说明:arg 参数的取值范围通常在 0~127 范围内,否则会产生不确定的结果。

    正常退出程序的代码如下:

    import sys
    
    print(11)
    sys.exit(0)
    
    • 1
    • 2
    • 3
    • 4

    程序运行结果如下:
    在这里插入图片描述
    通过为 exit() 方法指定非 0 参数异常终止程序,代码如下:

    import sys
    
    print(11)
    sys.exit(1)
    print(22)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    程序运行结果如下:
    在这里插入图片描述

    2.4 path属性——指定模块搜索路径

    path 属性用于获取一个字符串列表,它指定模块的搜索路径。在程序启动时,此列表的第一项 path[0] 通常是 Python 脚本(.py 文件) 所在的目录。如果脚本目录不可用(例如,交互式调用解释器或者从标准输入读取脚本),则 path[0] 为空字符串,它指示 Python 首先搜索当前目录中的模块。语法格式如下:

    sys.path
    
    • 1

    使用 path 属性获取 Python 解释器的模块搜索路径,并遍历输出,代码如下:

    import sys
    
    for i in sys.path:  # 遍历所有路径列表
        print(i)  # 打印遍历到的路径
    
    • 1
    • 2
    • 3
    • 4

    程序运行结果如下:

    E:\Code\lesson\python-package
    E:\Code\lesson
    D:\DevelopSoftware\PyCharm2021.3.3\PyCharm 2021.3.3\plugins\python\helpers\pycharm_display
    d:\developsoftware\python37\python37.zip
    d:\developsoftware\python37\DLLs
    d:\developsoftware\python37\lib
    d:\developsoftware\python37
    E:\Code\scrapy_study\venv
    E:\Code\scrapy_study\venv\lib\site-packages
    D:\DevelopSoftware\PyCharm2021.3.3\PyCharm 2021.3.3\plugins\python\helpers\pycharm_matplotlib_backend
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    使用 path 属性的 append() 方法向模块搜索路径中添加 ./module,然后遍历输出最新的模块搜索路径,代码如下:

    import sys
    
    sys.path.append("./module") # 添加模块搜索路径
    
    • 1
    • 2
    • 3

    2.5 argv属性——程序命令行参数列表

    argv 属性表示传递给 Python 脚本的命令行参数列表。argv[0] 是脚本名称(取决于操作系统是否为完整路径名)。语法格式如下:

    sys.argv
    
    • 1

    通过使用 argv 属性获取 Python 解释器的命令行参数列表,并使用 argv[0] 获取 Python 脚本的完整路径,代码如下:
    在这里插入图片描述
    通过使用 os 模块的 fsencode() 方法获取命令行参数的原始字节,代码如下:

    import sys
    import os
    
    for arg in sys.argv:
        print(os.fsencode(arg))
    
    • 1
    • 2
    • 3
    • 4
    • 5

    程序运行结果如下:

    b'E:/Code/lesson/python-package/demo5_sys.py'
    
    • 1

    注意:在 Unix 系统中,命令行参数是从 OS 传递的字节。Python 使用文件系统编码和 surrogateescape 错误处理程序对它们进行解码。

    2.6 platform属性——获取系统标识符

    platform 属性返回一个表示系统标识符的字符串。语法格式如下:

    sys.platform
    
    • 1

    操作系统及对应的 platform 值如下表所示:
    在这里插入图片描述
    用 platform 属性判断当前系统平台为哪个平台,代码如下:

    import sys
    
    if sys.platform == 'win32':
        print('当前是Windows平台')
    elif sys.platform == 'linux':
        print('当前是Linux平台')
    elif sys.platform == 'darwin':
        print('当前是Mac平台')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    笔者使用的是 Windows 平台,故程序运行结果如下:
    在这里插入图片描述

  • 相关阅读:
    Python:操作SQLite数据库简单示例
    C++结构型模式-适配器模式
    计算机中的第一个伟大发明(IR/IAR)
    新的QuickScan 2500系列:价格实惠且性能卓越
    优美的排列 II
    百度地图有感
    代码随想录刷题 Day 22
    Linux C编译器从零开发二
    【每日一题】2304. 网格中的最小路径代价-2023.11.22
    新的旅程(四)
  • 原文地址:https://blog.csdn.net/xw1680/article/details/125594820