Python sys模块

Python sys模块完全指南

Python sys模块完全指南

编程小白也能理解的系统交互工具包

sys模块是Python标准库中用于与Python解释器交互的重要工具。它提供了访问解释器使用或维护的变量,以及与解释器交互的函数。

简单来说,sys模块就像是你和Python解释器之间的”通信工具”,让你可以获取系统信息、控制程序行为、与操作系统交互等。

1. sys.argv – 命令行参数

大白话解释: 当你在命令行运行Python脚本时,sys.argv可以获取你跟在脚本名后面的所有参数,就像点菜时告诉服务员你要什么菜一样。

怎么用?

# 示例:保存为 script.py import sys # 打印所有参数 print(“所有参数:”, sys.argv) # 获取第一个实际参数(索引0是脚本名) if len(sys.argv) > 1: print(“第一个参数:”, sys.argv[1])

💡 使用技巧:sys.argv[0] 是脚本名称,真正的参数从索引1开始。执行 python script.py arg1 arg2 试试看!

2. sys.path – Python的搜索路径

大白话解释: 当Python需要导入模块时,它会去哪些文件夹里找?sys.path就是这些文件夹的列表,就像图书馆的书目索引。

代码示例

import sys # 打印当前Python搜索路径 print(“当前搜索路径:”) for path in sys.path: print(path) # 添加自定义路径 sys.path.append(‘/my/custom/path’) print(“\n添加后的路径:”, sys.path[-1])

💡 重要提示:你可以动态修改sys.path来添加自定义模块路径,但通常最好使用PYTHONPATH环境变量。

3. sys.version & sys.platform

sys.version: 获取当前Python解释器的版本信息

sys.platform: 获取当前操作系统平台(如win32、linux、darwin等)

使用示例

import sys print(“Python版本:”, sys.version) print(“操作系统平台:”, sys.platform) # 根据平台执行不同操作 if sys.platform.startswith(‘win’): print(“这是Windows系统”) elif sys.platform.startswith(‘linux’): print(“这是Linux系统”) elif sys.platform == ‘darwin’: print(“这是macOS系统”)

4. sys.exit() – 退出程序

大白话解释: 当你想提前结束程序时(比如遇到错误或完成操作),sys.exit()就是你的”紧急停止”按钮。

使用方法

import sys def main(): try: # 程序主要逻辑 result = do_something() if not result: # 提前退出并返回错误码 sys.exit(1) except Exception as e: print(f”错误发生: {e}”) sys.exit(2) # 退出状态码0表示成功,非0表示错误 sys.exit(0)

💡 你知道吗?在脚本中调用sys.exit()会引发SystemExit异常,可以被捕获做清理工作。

5. 标准输入输出流

sys.stdin: 标准输入(通常来自键盘)

sys.stdout: 标准输出(通常显示在控制台)

sys.stderr: 标准错误输出(用于错误信息)

基础用法

import sys # 输出到标准输出 sys.stdout.write(“这是普通输出\n”) # 输出到标准错误 sys.stderr.write(“这是错误信息!\n”) # 从标准输入读取 data = sys.stdin.readline() print(“你输入的是:”, data)

💡 高级技巧:你可以重定向这些流,比如把输出重定向到文件:sys.stdout = open('output.txt', 'w')

6. sys.getsizeof() – 获取对象内存大小

大白话解释: 这个函数可以告诉你一个Python对象在内存中占用了多少字节,就像问”这个文件在硬盘上占多大空间?”

内存大小比较

import sys # 基本类型 print(“整数:”, sys.getsizeof(10), “字节”) # 通常是28字节 print(“浮点数:”, sys.getsizeof(3.14), “字节”) # 通常是24字节 print(“字符串:”, sys.getsizeof(“hello”), “字节”) # 空字符串49字节,每字符+1字节 # 容器类型 print(“空列表:”, sys.getsizeof([]), “字节”) print(“含10个元素的列表:”, sys.getsizeof([0]*10), “字节”) # 自定义对象 class MyClass: pass obj = MyClass() print(“自定义对象:”, sys.getsizeof(obj), “字节”)

⚠️ 注意:sys.getsizeof()只返回对象本身大小,不包括其引用的对象大小。对于容器类型,可能需要递归计算真实大小。

总结:为什么学习sys模块很重要?

sys模块是Python系统交互的核心,它提供了:

  • 访问命令行参数的能力(sys.argv)
  • 控制Python模块搜索路径(sys.path)
  • 获取Python解释器和系统信息(sys.version, sys.platform)
  • 控制程序执行流程(sys.exit())
  • 管理输入输出流(sys.stdin, sys.stdout, sys.stderr)
  • 诊断内存使用情况(sys.getsizeof())

虽然作为编程小白可能不会立即用到所有功能,但理解sys模块是成为Python高手的重要一步。它让你能够编写更灵活、更强大的程序,与操作系统和Python解释器更深入地交互。

Python sys模块知识点汇总 | 为编程小白定制 | 使用大白话讲解复杂概念

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部