ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

每天学习一个Python库之sys库

2026/8/4 20:00:37 拓冰建站 浏览量
每天学习一个Python库之sys库

简介

        在 Python 的标准库中,sys 库就像连接代码与解释器的 “桥梁”,它提供了一系列与 Python 解释器紧密交互的函数和变量,是深入了解程序运行环境的关键工具。无论是获取命令行参数来实现灵活的程序调用,查看 Python 的版本信息以确保代码兼容性,还是控制程序的退出状态,sys 库都能发挥重要作用。对于开发者而言,掌握 sys 库能让你更好地掌控程序的运行细节,排查环境相关的问题;对于想进阶的 Python 学习者,了解 sys 库的用法,能加深对 Python 运行机制的理解。

1.获取Python信息

1.获取 Python 的解释器版本信息

  sys库中的version用于获取当前 Python 的解释器版本号,version_info用于获取解释器的版本信息。

import sys
print(sys.version)#获取当前Python的解释器版本号
print(sys.version_info)#获取解释器的版本信息

运行结果:

3.9.13 (tags/v3.9.13:6de2ca5, May 17 2022, 16:36:42) [MSC v.1929 64 bit (AMD64)]
sys.version_info(major=3, minor=9, micro=13, releaselevel='final', serial=0)

        第 1 行输出内容为version返回的信息,表示当前 Python 的解释器版本。
第 2 行输出内容为version_info返回的信息,表示当前版本的 Python 解释器的详细信息,以元组的形式返回,第 1 个元素为主版本号,第 2 个元素为次版本号,第 3 个元素为最小版本号。

 2.获取 Python 的其他信息

sys库中还提供了获取 Python 的其他信息的方法,具体如下。

  • maxsize属性:获取当前 Python 支持的对象中包含的最大数据长度。
  • platform属性:获取当前计算机的操作系统。
  • copyright属性:获取当前 Python 的版权信息。
  • executable属性:获取当前 Python 解释器在计算机中的目录地址。
  • exec_prefix属性:获取当前 Python 的安装目录地址。
import sys
print(sys.maxsize)#获取Python支持的对象中包含的最大数据长度。
print(sys.platform)#获取当前计算机的操作系统。
print(sys.copyright)#获取当前Python的版权信息
print(sys.executable)#获取当前Python解释器在计算机中的目录地址

2.退出程序

        当代码程序在执行过程中处于某种状态后需要退出时,可以使用sys库中的exit()函数。其使用形式如下

sys.exit(status=None)

        参数status:如果值被省略或为None,则默认为 0,表示成功退出。如果值为其他整数,则作为系统退出状态码。如果是其他信息,则会被当作报错信息输出。

import sys
if sys.version_info[0]*10+sys.version_info[1] < 38:sys.exit('您的Python版本过低,请安装Python 3.8及以上版本')
else:print('您的Python版本正确,代码将继续运行')
print('hello world')

        第 3 行代码在exit()函数中添加了非 0、非整数内容,因此程序会将exit()中的参数当作报错信息输出,使程序输出的结果与报错信息相似。

3. argv 获取输入命令

        在讲解pip工具时,介绍了pip的多个参数,例如在命令提示符窗口中执行pip list可以获取当前 Python 中已安装的所有第三方库的列表。而pip工具本质上是一个由代码编写而来的程序,那么在使用pip时,list这个参数是如何传递给程序的呢?程序又是如何处理list这个参数的呢?
以上的问题涉及sys库中的argv函数,argv函数可用于获取用户输入的参数并以列表的形式返回,列表的索引号为 0 时默认返回当前代码文件所在的目录地址。

import sys
print(sys.argv)

        向argv传递参数的方法与向pip传递参数的方法相同,需要在命令提示符窗口或终端中执行代码文件,即把 Python 代码文件当作一个程序直接执行,而不是在 IDLE 中使用菜单栏中的 “Run” 来执行。
在命令提示符窗口中执行代码文件的使用形式如下:

Python 代码路径

 D:\PythonProject\python\pythonbasic\9.py

import sys
import os
for i in range(1,len(sys.argv)):if sys.argv[i] =='-h':print('''本代码的帮助-h:用于查询帮助-a:用于获取Python的所有关键字-c:用于获取Python安装的所有第三方库的列表''')if sys.argv[i] =='-a':print('开始查询Python的所有关键字:')help("keywords")if sys.argv[i] =='-c':print('开始查询Python安装的所有第三方库: ')os.system('pip list')if sys.argv[i] == '-x':print('开始安装第三方库: ')os.system('pip install' )if sys.argv[i] == '-x':print('开始安装第三方库: ')help("keywords")

        第 3 行代码使用for循环,循环次数由接收的参数个数决定,目的是便于后面的代码能直接获取到sys.argv[i]的参数值。
第 4 - 7 行代码用于判断sys.argv[i]是否为-h,如果是则输出代码文件的使用帮助。
第 8 - 11 行代码用于判断sys.argv[i]是否为-a,如果是则使用help()函数输出 Python 的所有关键字。
第 12 - 15 行代码用于判断sys.argv[i]是否为-c,如果是则使用os.system()函数输出 Python 安装的所有第三方库。

打开cmd,输入命令

 

 4. stdout、stdin 和 stderr

sys库中的stdoutstdinstderr用于显示或获取数据流,其功能分别如下。

  sys.stdout:将信息显示到控制端,print()函数本质上是由sys.stdout封装而成的。

  sys.stdin:捕获用户输入的信息,input()函数本质上是由stdin封装而成的。

  sys.stderr:输出错误信息,显示效果与代码报错信息相同

import sys
sys.stdout.write('hello')
a = sys.stdin.readline()
print(a)
sys.stderr.write('错误,请修改!')

        第 2 行代码使用stdout中的write()方法将信息'hello'写入控制端,也可以使用writelines()方法
第 3 行代码使用stdin中的readline()方法表示从控制端获取一行信息,也可以使用read()readlines()表示从控制端获取多行信息。

        第 4 行代码将获取的信息输出。
第 5 行代码中的stderr.write()表示将报错信息写入控制端。