python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python的sys模块

Python的常用基础模块之sys模块详解

作者:Amo Xiang

这篇文章主要介绍了Python的常用基础模块之sys模块详解,sys 模块提供访问 Python 解释器使用或维护的属性,以及与 Python 解释器进行交互的方法,需要的朋友可以参考下

一、sys模块介绍

1.1 什么是 Python 解释器

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

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

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

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

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

在这里插入图片描述

在这里插入图片描述

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~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模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文