Python3 sys 模块常用功能及实战场景

 更新时间:2025年11月11日 08:46:40   作者:小陶coding  
在Python中,sys模块是与解释器交互的桥梁,提供了一系列用于访问 Python 解释器本身和操作系统相关信息的函数与变量,本文将系统讲解sys模块的常用功能及实战场景,帮助你高效利用其特性,感兴趣的朋友跟随小编一起看看吧

在 Python 中,sys模块是与解释器交互的桥梁,提供了一系列用于访问 Python 解释器本身和操作系统相关信息的函数与变量。无论是获取命令行参数、控制程序退出、还是查看系统环境,sys模块都扮演着不可或缺的角色。本文将系统讲解sys模块的常用功能及实战场景,帮助你高效利用其特性。

一、sys 模块的基本使用

sys模块是 Python 标准库的一部分,无需额外安装,直接导入即可使用:

import sys

二、核心功能与常用变量

1. 命令行参数:sys.argv

sys.argv是一个列表,存储程序运行时传入的命令行参数,其中:

  • sys.argv[0]:当前脚本的文件名(或路径);
  • sys.argv[1:]:实际传入的参数列表。

示例:创建demo.py脚本:

import sys
print("脚本名:", sys.argv[0])
print("参数列表:", sys.argv[1:])
print("参数个数:", len(sys.argv) - 1)

运行命令及输出:

python demo.py hello world 123

 脚本名: demo.py

参数列表: ['hello', 'world', '123']
参数个数: 3

应用场景:处理命令行输入(如脚本参数解析、批量任务处理)。

2. 退出程序:sys.exit([status])

sys.exit()用于终止当前程序,可选参数status表示退出状态:

  • status为整数:0 表示正常退出(默认),非 0 表示异常退出(可被操作系统捕获);
  • status为字符串:会打印该字符串并以状态码 1 退出。

示例

import sys
if len(sys.argv) < 2:
    sys.exit("错误:请提供至少一个参数")  # 异常退出,输出提示
sys.exit(0)  # 正常退出

3. 标准输入 / 输出 / 错误流:sys.stdin、sys.stdout、sys.stderr

这三个变量分别代表标准输入(键盘)、标准输出(屏幕)、标准错误流,均为文件对象,可用于重定向输入输出。

示例 1:重定向标准输出到文件

import sys
# 保存原始stdout
original_stdout = sys.stdout
# 将输出写入文件
with open("output.txt", "w") as f:
    sys.stdout = f  # 重定向stdout到文件
    print("这段文字会写入文件")
    print("而不是显示在屏幕上")
# 恢复原始stdout
sys.stdout = original_stdout
print("已恢复正常输出")

示例 2:从标准输入读取内容

import sys
print("请输入内容(按Ctrl+D结束):")
for line in sys.stdin:  # 逐行读取键盘输入
    print("你输入了:", line.strip())

4. 系统相关信息

(1)Python 解释器版本:sys.version、sys.version_info

  • sys.version:字符串形式的版本信息(如'3.9.7 (default, Sep 10 2021, 14:59:43) [GCC 8.4.0]');
  • sys.version_info:元组形式的版本信息(包含主版本、次版本等),便于版本判断。

示例

import sys
if sys.version_info >= (3, 6):
    print("Python 3.6及以上版本,支持f-string")
else:
    print("Python版本过低,不支持f-string")

(2)操作系统平台:sys.platform

返回当前操作系统的标识符,常见值:

  • win32:Windows 系统;
  • linux:Linux 系统;
  • darwin:macOS 系统。

示例

import sys
if sys.platform == "win32":
    print("Windows系统,路径分隔符为\\")
elif sys.platform == "linux":
    print("Linux系统,路径分隔符为/")

(3)路径分隔符:sys.pathsep、sys.sep

  • sys.pathsep:用于分隔环境变量PATH的符号(Windows 为;,Linux/macOS 为:);
  • sys.sep:路径中的目录分隔符(Windows 为\,Linux/macOS 为/)。

5. 模块搜索路径:sys.path

sys.path是一个列表,存储 Python 解释器查找模块的路径。当使用import导入模块时,解释器会依次搜索sys.path中的目录。

示例

import sys
print("模块搜索路径:")
for path in sys.path:
    print(path)
# 临时添加自定义路径(程序退出后失效)
sys.path.append("/home/user/my_modules")

应用场景:动态添加自定义模块所在目录,解决 “模块找不到” 问题。

6. 递归深度限制:sys.getrecursionlimit()、sys.setrecursionlimit(n)

Python 默认递归深度限制为 1000,超过会抛出RecursionError。可通过这两个函数查看或修改限制(需谨慎,过大可能导致内存溢出)。

示例

import sys
print("默认递归深度:", sys.getrecursionlimit())  # 输出:1000
sys.setrecursionlimit(2000)  # 修改为2000

三、实战场景示例

1. 命令行参数解析(简易版)

实现一个计算两数之和的脚本,通过命令行传入参数:

import sys
def add(a, b):
    return a + b
if __name__ == "__main__":
    if len(sys.argv) != 3:
        sys.exit("用法:python add.py <数字1> <数字2>")
    try:
        num1 = float(sys.argv[1])
        num2 = float(sys.argv[2])
        print(f"{num1} + {num2} = {add(num1, num2)}")
    except ValueError:
        sys.exit("错误:请输入有效的数字")

运行效果:

python add.py 3.5 4.2

3.5 + 4.2 = 7.7

2. 捕获程序异常并正常退出

在程序崩溃时,通过sys.exit()返回非 0 状态码,便于外部脚本判断执行结果:

import sys
try:
    # 模拟可能出错的代码
    result = 1 / 0
except ZeroDivisionError as e:
    print(f"程序出错:{e}", file=sys.stderr)  # 错误信息写入stderr
    sys.exit(1)  # 异常退出,状态码1
sys.exit(0)  # 正常退出

3. 限制程序运行时间

结合signal模块(Linux/macOS)和sys.exit(),实现程序超时自动退出:

import sys
import signal
def timeout_handler(signum, frame):
    sys.exit("程序超时,自动退出")
# 设置超时时间为5秒
signal.signal(signal.SIGALRM, timeout_handler)
signal.alarm(5)
# 模拟耗时操作(若超过5秒则触发超时)
import time
time.sleep(6)  # 超过5秒,触发超时

四、注意事项

  • sys.exit()exit()的区别:
    • sys.exit()是模块级函数,功能更灵活(支持状态码),适合在脚本中使用;
    • exit()是交互式解释器中的函数,本质上调用sys.exit(),不建议在脚本中使用。
  • sys.path的修改范围:通过sys.path.append()添加的路径仅在当前程序运行时有效,不会修改系统环境变量。
  • 跨平台兼容性:使用sys.platformsys.sep等变量处理路径或系统相关逻辑,避免硬编码(如直接写死\/)。

总结

sys模块是 Python 与系统交互的核心工具,其功能涵盖命令行参数处理、程序退出控制、输入输出重定向、系统信息获取等多个方面。掌握sys.argvsys.exit()sys.path等核心成员,能帮助你编写更灵活、更贴近系统的 Python 程序,尤其在脚本开发、命令行工具编写等场景中不可或缺。合理利用sys模块的特性,可显著提升程序的适应性和可控性。

到此这篇关于Python3 sys 模块的文章就介绍到这了,更多相关Python3 sys 模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python爬取读者并制作成PDF

    Python爬取读者并制作成PDF

    本文是在学习了beautifulsoup之后,制作的一个爬取读者杂志并使用reportlab制作成pdf的python小工具,咱也文艺一下:),分享给大家,有需要的小伙伴参考下吧。
    2015-03-03
  • Python实现随机游走的示例代码

    Python实现随机游走的示例代码

    随机游走是一个数学对象,称为随机或随机过程,它描述了一条路径,该路径由一些数学空间上的一系列随机步骤组成,下面我们就来学习一下Python如何实现随机游走的吧
    2023-12-12
  • python如何进行矩阵运算

    python如何进行矩阵运算

    在本篇文章里小编给大家分享的是关于python进行矩阵运算的方法及实例代码,需要的朋友们可以学习下。
    2020-06-06
  • Python数学建模PuLP库线性规划进阶基于字典详解

    Python数学建模PuLP库线性规划进阶基于字典详解

    在大规模的规划问题中,这样逐个定义变量和设置模型参数非常繁琐,效率很低。Pulp 库提供了一种快捷方式,可以结合 Python语言的循环和容器,使用字典来创建问题
    2021-10-10
  • 使用Python编写简单的画图板程序的示例教程

    使用Python编写简单的画图板程序的示例教程

    这篇文章主要介绍了使用Python编写简单的画图板软件的示例教程,利用到了经常被用来做游戏的pygame模块,需要的朋友可以参考下
    2015-12-12
  • 基于pandas向csv添加新的行和列

    基于pandas向csv添加新的行和列

    这篇文章主要介绍了基于pandas向csv添加新的行和列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)

    用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)

    这篇文章主要介绍了用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • python爬取晋江文学城小说评论(情绪分析)

    python爬取晋江文学城小说评论(情绪分析)

    这篇文章主要介绍了使用python爬取晋江文学城小说评论(情绪分析),全文代码详细,逻辑清晰,很适合学习爬虫爬取的朋友,需要的朋友可以参考下
    2021-04-04
  • Python实现全排列的打印

    Python实现全排列的打印

    这篇文章主要为大家详介绍了Python实现全排列的打印的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • python tiktoken的简介、安装、使用方法

    python tiktoken的简介、安装、使用方法

    tiktoken是OpenAI于近期开源的Python第三方模块,该模块主要实现了tokenizer的BPE(Byte pair encoding)算法,并对运行性能做了极大的优化,本文将介绍python tiktoken的简介、安装、使用方法,感兴趣的朋友跟随小编一起看看吧
    2023-10-10

最新评论