当编写 Python 代码时,通常都会得到一个包含 Python 代码的以 .py
为扩展名的文件。要运行编写的代码,就需要使用 Python 解释器去执行 .py
文件。因此,Python 解释器就是用来执行 Python 代码的一种工具。常见的 Python 解释器有以下几种:
>>>
作为提示符,而 IPython 用 In[ 序号]:
作为提示符。.NET
平台上的 Python 解释器,可以直接把 Python 代码编译成 .NET
的中间代码。sys 模块提供访问 Python 解释器使用或维护的属性,以及与 Python 解释器进行交互的方法。简单来讲,sys 模块负责程序与 Python 解释器的交互,并提供了一系列的属性和方法,用于操控 Python 运行时的环境。
在 Python 程序中使用 sys 模块,首先需要使用 import 导入,代码如下:
import sys
导入 sys 模块后,就可以使用该模块提供的属性和方法了。
modules 属性返回一个将模块名称映射到已加载模块的字典。语法格式如下:
sys.modules # 返回值:返回一个字典
使用 modules 属性获取本机所有已安装的模块及所在模块文件,代码如下:
import sys
for key, value in sys.modules.items(): # 遍历所有模块字典
print(f'{key}:{value}') # 打印模块及所在模块文件
程序运行结果如下:
使用 modules 属性获取 os 模块的来源,代码如下:
import sys
#
print(sys.modules["os"])
使用 modules 对象的 keys() 方法可以获取到所有导入的模块列表,代码如下:
import sys
print('模块列表:')
for i in sys.modules.keys(): # 遍历模块列表
print('' + i) # 打印模块
getdefaultencoding() 方法用于返回当前默认字符串编码的名称,语法格式如下:
sys.getdefaultencoding()
参数说明:返回值:返回类似 ascii、utf-8 或者 gbk 等的字符串,具体的值根据 site.py
模块中设置的默认编码而定。
使用 getdefaultencoding() 方法获取本地 Python 解释器使用的默认字符串编码,代码如下:
import sys
print(sys.getdefaultencoding()) # utf-8
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)
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") # 添加模块搜索路径
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 错误处理程序对它们进行解码。
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平台')