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