Python的sys模块详解(第5节)


sys模块详解

首先我们简单了解一下什么是Python解释器,当编写Python代码时,通常都会得到一个包含Python代码的以“.py”为扩展名的文件。要运行编写的代码,就需要使用Python解释器去执行“.py”文件。因此,Python解释器就是用来执行Python代码的一种工具。在第2章【安装和运行Python】教程里面,我们已经介绍了免安装版本的Pyhint编辑器,在该软件里面同时包含Python解释器和编辑器。

sys模块是Python标准库提供的一个重要模块,通过sys模块可以实现对Python解释器的访问和控制。sys即为“system”,就是系统的意思,顾名思义该模块和系统的操作有关。简单来讲,sys模块负责程序与Python解释器的交互,并提供了一系列的属性和方法,用于操控Python运行时的环境。

1、sys.platform

sys.platform属性返回一个表示系统标识符的字符串。例如:

动手练一练:

import sys

print(sys.platform)  # 输出 win32

执行以上代码,输出结果为:

win32

上面的例子中,我们可以利用这个方法识别电脑操作系统。不同的操作系统对应的platform值不同,如下表所示:

操作系统 执行结果
Linux ‘linux’
Windows ‘win32’
Windows/Cygwin ‘cygwin’
Mac OS X ‘darwin’

2、sys.argv

sys.argv属性可以获取运行Python程序的命令行参数。在解释器启动后,argv属性表示传递给Python脚本的命令行参数列表。argv[0]是脚本名称(取决于操作系统是否为完整路径名)。例如:

动手练一练:

import sys

print(sys.argv[0])

执行以上代码,输出结果为:

E:\Pyhint\Learn-Python\test\new.py

3、sys.exit()函数

sys.exit()函数用于退出Python解释器,即退出正在运行的程序。sys.exit()函数提供一个可选的整数参数,参数为“0”表示告诉操作系统正常退出,“1”表示非正常退出。正常退出程序的代码如下:

动手练一练:

import sys

print(11)
sys.exit(0)

执行以上代码,输出结果为:

11

4、sys.path

sys.path属性用于查找模块所在目录的目录名列表。sys.path属性可以获取一个字符串列表,它指定模块的搜索路径。我们可以使用“for...in...”遍历输出的方法,获取Python解释器的模块搜索路径,代码如下:

动手练一练:

import sys

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

执行以上代码,输出结果为:

E:\Pyhint\Learn-Python\test
E:\Pyhint\condition\Python38\python38.zip
E:\Pyhint\condition\Python38\DLLs
E:\Pyhint\condition\Python38\lib
E:\Pyhint\condition\Python38
E:\Pyhint\condition\Python38\lib\site-packages
E:\Pyhint\condition\Python38\lib\site-packages\jmpy3-1.0.6-py3.8.egg

我们可以使用append()函数向模块搜索路径中添加自己的模块路径“./test”,然后遍历输出最新的模块搜索路径,代码如下:

动手练一练:

import sys

sys.path.append("./test")

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

执行以上代码,输出结果为:

E:\Pyhint\Learn-Python\test
E:\Pyhint\condition\Python38\python38.zip
E:\Pyhint\condition\Python38\DLLs
E:\Pyhint\condition\Python38\lib
E:\Pyhint\condition\Python38
E:\Pyhint\condition\Python38\lib\site-packages
E:\Pyhint\condition\Python38\lib\site-packages\jmpy3-1.0.6-py3.8.egg
./test

5、sys.modules

sys.modules属性以字典的形式返回所有当前Python环境中已经导入的系统模块。使用sys.modules属性可以获取本机所有已安装的模块及所在模块文件,代码如下:

动手练一练:

import sys

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

利用sys.modules属性,我们可以获取某个模块的来源,例如,获取os模块的来源代码如下:

动手练一练:

import sys

print(sys.modules["os"])

执行以上代码,输出结果为:

<module 'os' from 'E:\\Pyhint\\condition\\Python38\\lib\\os.py'>

6、sys.version

sys.version属性可以获取Python解释程序的版本信息。

动手练一练:

import sys

print(sys.version)

执行以上代码,输出结果为:

3.8.10