Python 常用基础模块:sys模块

Posted Amo Xiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

导入 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])

参数说明:

  1. arg :可选参数,该参数是一个整数,表示退出状态。0 表示正常退出,非 0 表示异常终止。如果指定为一个非整数值,则将它打印到 sys.stderr,并使用退出码 1。
  2. 返回值:返回退出码,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之常用模块os模块和sys模块

python学习——常用模块

Python基础理论 - 常用模块

python常用模块基础

Python基础第十三天——sys模块logging模块json模块pickle模块