目录
  • 一、sys模块介绍
    • 1.1 什么是 Python 解释器
    • 1.2 sys 模块的作用
  • 二、常用方法及属性介绍
    • 2.1 modules属性
    • 2.2 getdefaultencoding()方法
    • 2.3 exit()方法
    • 2.4 path属性
    • 2.5 argv属性
    • 2.6 platform属性

一、sys模块介绍

1.1 什么是 Python 解释器

当编写 Python 代码时,通常都会得到一个包含 Python 代码的以 .py 为扩展名的文件。

要运行编写的代码,就需要使用 Python 解释器去执行 .py 文件。

因此,Python 解释器就是用来执行 Python 代码的一种工具。常见的 Python 解释器有以下几种:

  • CPython:Python 的官方解释器。

当我们从 Python 官方网站下载并安装好 Python 后,就直接获得了 CPython 解释器,该解释器是使用 C 语言开发的,所以叫 CPython。

我们在 CMD 命令窗口中运行 python 命令就是启动 CPython 解释器,如下图所示:

在这里插入图片描述

  • IPython :IPython 是基于 CPython 之上的一个交互式解释器,它执行 Python 代码的功能和 CPython 是完全一样的,唯一的区别是:CPython 用 >>> 作为提示符,而 IPython 用 In[ 序号]: 作为提示符。

在这里插入图片描述

  • PyPy :PyPy 解释器的目标是执行速度,它采用 JIT 技术,对 Python 代码进行动态编译,所以可以显著提高 Python 代码的执行速度。
  • Jython:运行在 Java 平台上的 Python 解释器,可以直接把 Python 代码编译成 Java 字节码执行。
  • IronPython :运行在微软 .NET 平台上的 Python 解释器,可以直接把 Python 代码编译成 .NET 的中间代码。

1.2 sys 模块的作用

sys 模块提供访问 Python 解释器使用或维护的属性,以及与 Python 解释器进行交互的方法。

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

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

import sys

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

二、常用方法及属性介绍

2.1 modules属性

将模块名称映射到已加载模块的字典

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

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

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

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

程序运行结果如下:

在这里插入图片描述

使用 modules 属性获取 os 模块的来源,代码如下:

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

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

import sys print('模块列表:') for i in sys.modules.keys(): # 遍历模块列表 print('' + i) # 打印模块

2.2 getdefaultencoding()方法

获取默认字符串编码名称

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

sys.getdefaultencoding()

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

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

import sys print(sys.getdefaultencoding()) # utf-8

2.3 exit()方法

退出Python

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

sys.exit([arg])

参数说明:

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

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

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

import sys print(11) sys.exit(0)

程序运行结果如下:

在这里插入图片描述

通过为 exit() 方法指定非 0 参数异常终止程序,代码如下:

import sys print(11) sys.exit(1) print(22)

程序运行结果如下:

在这里插入图片描述

2.4 path属性

指定模块搜索路径

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

sys.path

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

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

程序运行结果如下:

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

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

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

2.5 argv属性

程序命令行参数列表

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

sys.argv

通过使用 argv 属性获取 Python 解释器的命令行参数列表,并使用 argv[0] 获取 Python 脚本的完整路径,代码如下:

在这里插入图片描述

通过使用 os 模块的 fsencode() 方法获取命令行参数的原始字节,代码如下:

import sys import os for arg in sys.argv: print(os.fsencode(arg))

程序运行结果如下:

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

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

2.6 platform属性

获取系统标识符

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

sys.platform

操作系统及对应的 platform 值如下表所示:

在这里插入图片描述

用 platform 属性判断当前系统平台为哪个平台,代码如下:

import sys if sys.platform == 'win32': print('当前是Windows平台') elif sys.platform == 'linux': print('当前是Linux平台') elif sys.platform == 'darwin': print('当前是Mac平台')

笔者使用的是 Windows 平台,故程序运行结果如下:

在这里插入图片描述

到此这篇关于Python的常用基础模块之sys模块详解的文章就介绍到这了,更多相关Python的sys模块内容请搜索本网站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本网站!

您可能感兴趣的文章:

  • python sys模块使用方法介绍
  • python中的sys模块详解
  • python sys模块使用方法介绍
  • python标准库学习之sys模块详解
  • python中内置库os与sys模块的详细介绍