Python基础之标准库sys

本文详细介绍了Python的sys模块,涵盖了版本信息获取、系统资源查看、参数传递、执行文件路径、字节顺序、模块管理、编码设置等核心功能,适合开发者理解和利用sys模块进行跨平台编程和环境管理。

sys作用:python的sys模块提供访问由解释器使用或维护的变量接口,并提供了一些函数来和解释器进行交互,操控python运行时环境。

import sys

print(sys.version)  # 返回python解释器版本号,用于某程序需要指定版本号运行
print(sys.maxsize)  # 表示操作系统承载的最大int值
print(sys.maxunicode)  # 最大Unicode代码点值的整数,即1114111
print(sys.path)  # 当前脚本的path环境变量
print(sys.platform)  # 返回操作系统平台名称,在编写跨平台应用时很有用
print(sys.argv)  # 当python脚本运行时的脚本名以及参数作为一个一个list,并输出。实现程序从程序外部向程序内部传递参数
print(sys.executable)  # 一个字符串,给出python解释器的可执行二进制文件的绝对路径。
# 如果python无法检索其可执行文件的真实路径,sys.executable则将为空字符串或None
print(sys.byteorder)  # 本地字节顺序的指示符--在大端序(最高有效位优先)操作系统上值为‘big’,在小端序(最低有效位)操作系统上为little
print(sys.version_info)  # 包含版本号的五个组件的元组(major=3, minor=10, micro=2, releaselevel='final', serial=0)
print(sys.api_version)  # 此解释器的C API版本
print(sys.stdin)  # 标准输入
print(sys.stdout)  # 标准输出
print(sys.stderr)  # 标准错误
# 常用方法
# sys.exit(0)  # 退出程序,正常退出时exit(0)
# sys.exit(1)
print(sys.modules)  # 返回系统到日的模块字段,key是模块名,value是模块
print(sys.modules.keys())  # 所有已导入模块名列表
print(sys.getdefaultencoding())  # 返回当前Unicode实现使用的当前默认字符串编码名称
print(sys.getfilesystemencoding())  # 返回用于在Unicode文件名和字节文件名之间进行转换的编码名称
print(sys.getrecursionlimit())  # 返回最大递归次数
sys.setrecursionlimit(1100)  # 设置最大递归次数

for obj in [int(), float(), list(), tuple(), dict(), set(), object]:
    print(str(obj.__class__).ljust(20), sys.getsizeof(obj))

a = [1, 2, 3]
b = a
c = b
print(sys.getrefcount(a)) # 返回obj的引用计数。返回的计数通常比预期高一个,因为它包含临时引用作为参数

sys.exc_info()  # 获取当前正在处理的异常类,exc_type, exc_value,exc_traceback当前处理的异常详细信息
print(sys.getwindowsversion())  # 获取windows版本
sys.stdin.readline()  # 从标准输入读取一行,会读取末尾的换行符
sys.stdout.write("hello word") # 向标准输出写入内容

### Python `sys` 标准库的功能与使用方法 #### 什么是 `sys` 库? `sys` 是 Python 的内置标准库之一,主要用于提供访问由解释器维护的变量以及与解释器交互的函数。通过该模块可以实现对 Python 解释器状态的操作和控制。 --- #### 主要功能概述 以下是 `sys` 模块的一些核心功能: 1. **获取文件系统的编码方式** 使用 `sys.getfilesystemencoding()` 方法可以获得当前操作系统上文件系统使用的编码方式[^1]。 ```python import sys encoding = sys.getfilesystemencoding() print(f"File system encoding: {encoding}") ``` 2. **查看已导入的模块列表** 可以通过 `sys.modules.keys()` 查看当前会话中已经加载的所有模块名称。 ```python import sys modules_loaded = list(sys.modules.keys()) print(modules_loaded[:10]) # 打印前十个模块名作为示例 ``` 3. **查询 Python 版本信息** 利用 `sys.version` 或者更详细的 `sys.version_info` 获取当前运行环境中的 Python 版本号及其编译细节[^3]。 ```python import sys python_version = sys.version detailed_version = sys.version_info print(python_version) print(detailed_version) ``` 4. **设置路径搜索顺序** 当需要动态调整模块查找路径时,可以通过修改 `sys.path` 来完成这一操作。默认情况下它包含了多个目录地址用于定位所需脚本或包的位置。 ```python import sys current_paths = sys.path new_path = "/path/to/new/module" if new_path not in current_paths: sys.path.append(new_path) print("Updated search paths:", sys.path[-5:]) # 显示最后五个路径项 ``` 5. **终止程序执行** 调用 `sys.exit([arg])` 函数能够安全地中止正在运行的应用程序,并可以选择传递一个整数值给调用方表示退出码(通常零代表成功)[^3]。 ```python import sys exit_code = 0 message = "Program completed successfully." print(message) sys.exit(exit_code) # 正常结束应用 ``` 6. **读取命令行参数** 如果希望从外部传入一些配置选项或者输入数据,则可以直接利用 `sys.argv` 属性来接收这些附加的信息片段。 ```python import sys arguments_received = sys.argv[1:] print("Command-line Arguments Received:") for index, arg in enumerate(arguments_received): print(f"{index}: {arg}") ``` 7. **标准流重定向** 对于标准输入/输出设备的支持也是其重要特性之一;比如我们可以很容易地改变默认打印目标至其他地方像日志文件之类的地方去。 ```python import sys original_stdout = sys.stdout # 记录原始stdout对象以便恢复之用 with open('logfile.txt', 'w') as f: sys.stdout = f # 将stdout指向新创建的日志文件f print("This line will be written to logfile.") sys.stdout = original_stdout # 还原回原来的stdout设定 print("Back to console output now.") ``` 8. **内存管理相关工具** 提供了一些关于垃圾回收机制的状态报告接口如`getrefcount()`, 它返回指定对象被引用次数加一的结果因为计数本身也会算作一次额外引用. ```python import sys obj_example = object() ref_count = sys.getrefcount(obj_example)-1 print(f'Reference count of example object is {ref_count}.') ``` 9. **平台特定属性检测** 借助某些只读字段判断当前宿主机硬件架构类别或是操作系统家族归属情况等实用情报。 ```python import sys platform_details = { 'Platform': sys.platform, 'Byte Order': sys.byteorder, 'Max Int Size': sys.maxsize } print(platform_details) ``` 以上只是列举了一部分常见的用途场景而已,在实际开发过程中还会有更多高级技巧等待探索发现! --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值