pythonSTL---sys
sys 是 Python 标准库中的一个内置模块,它提供了许多与 Python 解释器和系统环境进行交互的功能。
sys方法
1. 导入 sys 模块
在使用 sys 库的功能之前,需要先导入它:
import sys
2. 命令行参数 (sys.argv)
sys.argv 是一个包含命令行参数的列表。其中,sys.argv[0] 是脚本的名称,后续的元素是传递给脚本的参数。
import sys# 打印脚本名称
print(f"脚本名称: {sys.argv[0]}")# 打印所有命令行参数
for i, arg in enumerate(sys.argv):print(f"参数 {i}: {arg}")
假设将上述代码保存为 test.py,在命令行中运行 python test.py arg1 arg2,输出结果将显示脚本名称和传递的参数。
3. Python 解释器信息
3.1 sys.version
sys.version 是一个字符串,包含了 Python 解释器的版本信息,如 Python 版本号、编译信息等。
import sys
print(sys.version)
3.2 sys.version_info
sys.version_info 是一个 namedtuple,包含了 Python 版本的主要信息,如主版本号、次版本号、微版本号等。
import sys
print(sys.version_info)
print(f"主版本号: {sys.version_info.major}")
print(f"次版本号: {sys.version_info.minor}")
4. 系统路径 (sys.path)
sys.path 是一个包含模块搜索路径的列表。Python 在导入模块时,会按照这个列表中的路径顺序进行搜索。
import sys# 打印系统路径
for path in sys.path:print(path)# 可以动态添加路径
sys.path.append('/path/to/your/module')
5. 退出 Python 解释器 (sys.exit())
sys.exit() 函数用于退出 Python 解释器。可以传递一个整数参数作为退出状态码,默认状态码为 0 表示正常退出。
import systry:# 一些代码逻辑result = 1 / 0 # 模拟异常
except ZeroDivisionError:print("发生除零错误,程序退出")sys.exit(1) # 以状态码 1 退出
6. 标准输入、输出和错误流
sys 模块提供了对标准输入 (sys.stdin)、标准输出 (sys.stdout) 和标准错误 (sys.stderr) 的访问。
6.1 标准输出重定向
import sys# 保存原始的标准输出
original_stdout = sys.stdout# 打开一个文件以写入模式
with open('output.txt', 'w') as f:# 将标准输出重定向到文件sys.stdout = fprint("这行文本将被写入文件")# 恢复标准输出
sys.stdout = original_stdout
print("这行文本将显示在控制台")
6.2 标准输入读取
import sys# 从标准输入读取一行
line = sys.stdin.readline()
print(f"你输入的内容是: {line.strip()}")
7. 递归深度限制 (sys.getrecursionlimit() 和 sys.setrecursionlimit())
Python 解释器对递归调用的深度有一个默认限制,以防止无限递归导致栈溢出。可以使用 sys.getrecursionlimit() 获取当前的递归深度限制,使用 sys.setrecursionlimit() 设置新的递归深度限制。
import sys# 获取当前递归深度限制
current_limit = sys.getrecursionlimit()
print(f"当前递归深度限制: {current_limit}")# 设置新的递归深度限制
sys.setrecursionlimit(2000)
new_limit = sys.getrecursionlimit()
print(f"新的递归深度限制: {new_limit}")
8. 平台信息 (sys.platform)
sys.platform 是一个字符串,用于标识当前 Python 解释器运行的操作系统平台。
import sysprint(f"当前操作系统平台: {sys.platform}")
常见的平台标识符包括 'win32'(Windows)、'linux'(Linux)、'darwin'(macOS)等。
9. 最大整数值 (sys.maxsize)
sys.maxsize 表示当前平台上 Python 解释器所能表示的最大整数值。
import sysprint(f"最大整数值: {sys.maxsize}")
10. 内置模块信息 (sys.builtin_module_names)
sys.builtin_module_names 是一个包含所有内置模块名称的元组。
import sysprint("所有内置模块名称:")
for module_name in sys.builtin_module_names:print(module_name)
11. 内存使用信息 (sys.getsizeof())
sys.getsizeof() 函数用于返回对象占用的内存大小(以字节为单位)。
import sysmy_list = [1, 2, 3, 4, 5]
list_size = sys.getsizeof(my_list)
print(f"列表占用的内存大小: {list_size} 字节")
os模块常量
一、平台标识常量
1. os.name
| 值 | 对应系统 | 典型场景 |
|---|---|---|
posix | Linux/macOS | 判断是否支持 Unix 特性 |
nt | Windows | 处理路径分隔符差异 |
java | Jython 环境 | 特殊运行环境检测 |
if os.name == 'posix':print("正在类 Unix 系统运行")
二、路径操作常量
1. 路径分隔符
| 常量 | 值 (Win/Linux) | 作用 |
|---|---|---|
os.sep | \ / / | 路径层级分隔符(推荐替代硬编码符号) |
os.altsep | / / None | 备用分隔符(Win 兼容 Unix 路径) |
os.extsep | . | 文件名与扩展名的分隔符 |
跨平台路径构建示例:
config_path = ["data", "config", "app.yaml"]
full_path = os.sep.join(config_path) # 自动适配系统分隔符
2. 路径组合符
| 常量 | 值 (Win/Linux) | 应用场景 |
|---|---|---|
os.pathsep | ; / : | 环境变量多路径分隔符(PATH) |
os.defpath | .;/bin / 类似值 | 可执行文件默认搜索路径 |
三、目录符号常量
| 常量 | 值 | 功能说明 |
|---|---|---|
os.curdir | . | 表示当前目录 |
os.pardir | .. | 表示父目录 |
路径解析示例:
parent_dir = os.path.abspath(os.path.join(os.curdir, os.pardir))
四、文件操作常量
1. 文件存在性及权限检查
| 常量 | 二进制掩码 | 用途 |
|---|---|---|
os.F_OK | 0 | 检查文件是否存在 |
os.R_OK | 4 | 检查读权限 |
os.W_OK | 2 | 检查写权限 |
os.X_OK | 1 | 检查执行权限 |
权限验证代码:
if os.access("/usr/bin/python", os.X_OK):print("文件可执行")
2. 文件打开模式(需配合 os.open)
| 常量 | 功能说明 |
|---|---|
os.O_RDONLY | 只读模式 |
os.O_WRONLY | 只写模式 |
os.O_RDWR | 读写模式 |
os.O_CREAT | 文件不存在时创建 |
os.O_EXCL | 与 O_CREAT 配合使用防覆盖 |
文件创建示例:
fd = os.open("data.log", os.O_WRONLY | os.O_CREAT, 0o644)
3. 文件指针定位
| 常量 | 对应值 | 描述 |
|---|---|---|
os.SEEK_SET | 0 | 文件起始位置 |
os.SEEK_CUR | 1 | 当前指针位置 |
os.SEEK_END | 2 | 文件末尾位置 |
五、特殊设备常量
| 常量 | 路径 (Win/Linux) | 用途 |
|---|---|---|
os.devnull | nul / /dev/null | 空设备(丢弃输出) |
使用示例:
with open(os.devnull, 'w') as f:sys.stdout = f # 禁用标准输出
六、其他实用常量
| 常量 | 说明 |
|---|---|
os.linesep | 系统换行符(\n/\r\n) |
os.supports_follow_symlinks | 函数是否支持符号链接追踪 |
综合应用场景
跨平台路径处理模板
import osdef safe_join(base, *paths):"""跨平台安全路径拼接"""full_path = os.path.abspath(os.path.join(base, *paths))if not os.path.exists(full_path):os.makedirs(full_path, exist_ok=True)return full_path.replace(os.sep, '/') # 统一为 Unix 风格路径
权限检查工具函数
def validate_permissions(filepath):"""详细权限检查"""checks = [(os.F_OK, "存在性"),(os.R_OK, "可读性"),(os.W_OK, "可写性"),(os.X_OK, "可执行性")]for flag, desc in checks:print(f"{desc}: {'√' if os.access(filepath, flag) else '×'}")
注意事项
-
平台差异性
Windows 和 Linux 的常量表现不同,建议通过os.path模块函数代替直接操作常量 -
常量只读性
所有os模块常量均为只读,修改会触发AttributeError -
版本兼容
Python 3.10+ 新增os.O_TMPFILE(Linux 专属)等常量,需注意版本差异
相关文章:
pythonSTL---sys
sys 是 Python 标准库中的一个内置模块,它提供了许多与 Python 解释器和系统环境进行交互的功能。 sys方法 1. 导入 sys 模块 在使用 sys 库的功能之前,需要先导入它: import sys2. 命令行参数 (sys.argv) sys.argv 是一个包含命令行参数…...
基于Python+Flask+MySQL+HTML的爬取豆瓣电影top-250数据并进行可视化的数据可视化平台
FlaskMySQLHTML 项目采用前后端分离技术,包含完整的前端,以flask作为后端 Pyecharts、jieba进行前端图表展示 通过MySQL收集格列数据 通过Pyecharts制作数据图表 这是博主b站发布的详细讲解,感兴趣的可以去观看:【Python爬虫可…...
Python在数据处理中的应用:从入门到精通
活动发起人小虚竹 想对你说: 这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!…...
七大常用智能家居协议对比
如果您不知道在项目中使用哪种智能家居通信协议,那么进入智能家居行业可能会很困难。如果没有合适的协议将其集成到智能家居生态系统中,智能家居设备将无法正常工作。否则,您将面临硬件和软件无法满足最终用户期望的风险。协议选择不当可能会…...
996引擎-问题处理:缺失特效分割文件 ModelAtlasSplitConfigs
通常我们买的资源都是带会 ModelAtlasSplitConfigs.txt 或 sceneAtlasSplitConfigs.txt 的 但有时确实找不到的话,是可以用996工具生成的:...
异步加载错误如何解决
首先是 提供两张图 如果数据过多的情况下我在所内和住家形式频繁的来回切换 导致数据展示的不一样 大家是不是有这样的问题 这个是导致了数据展示有问题的情况 住家的情况本来是没有几层的 下面我帮大家解决一下 // 防止异步延迟 const Noop () > { } const lhl (resDa…...
R语言零基础系列教程-01-R语言初识与学习路线
代码、讲义、软件回复【R语言01】获取。 R语言初识 R是一个开放的统计编程环境,是一门用于统计计算和作图的语言。“一切皆是对象”,数据、函数、运算符、环境等等都是对象。易学,代码像伪代码一样简洁,可读性高强大的统计和可视…...
C 语言实现彩票模拟:指针与数组的巧妙运用
在 C 语言编程学习中,通过实践项目来掌握知识是非常有效的途径。本次我们聚焦于一个彩票模拟程序的实现,这不仅能让大家巩固 C 语言的基础概念,还能深入理解指针和数组在实际场景中的运用。 一、彩票模拟程序需求分析 彩票模拟程序主要模拟真实彩票抽奖的过程。具体来说,需…...
自动化测试-网页聊天室
项目介绍: 针对基于WebSocket协议的网页端即时通讯系统,主导设计并实施全流程自动化测试方案。通过构建模块化测试框架,完成对核心业务场景(用户登录鉴权、消息同步、实时聊天等)的自动化验证,最终达成测试…...
WPF CommunityToolkit.MVVM库的简单使用
CommunityToolkit.MVVM 是 .NET 社区工具包中的一部分,它为实现 MVVM(Model-View-ViewModel)模式提供了一系列实用的特性和工具,能帮助开发者更高效地构建 WPF、UWP、MAUI 等应用程序。以下是关于它的详细使用介绍: 1…...
ffmpeg面试题整理
1. 基础概念 问题:FFmpeg 是什么?它的核心功能有哪些? 编解码:支持几乎所有音视频格式(如 H.264, AAC, MP3)。转换:在不同容器格式之间转换(如 MP4 → MKV)。流处理&…...
创新实践分享:基于边缘智能+扣子的智能取物机器人解决方案
在 2024 年全国大学生物联网设计竞赛中,火山引擎作为支持企业,不仅参与了赛道的命题设计,还为参赛队伍提供了相关的硬件和软件支持。以边缘智能和扣子的联合应用为核心,参赛者们在这场竞赛中展现出了卓越的创新性和实用性…...
【蓝桥杯】省赛:神奇闹钟
思路 python做这题很简单,灵活用datetime库即可 code import os import sys# 请在此输入您的代码 import datetimestart datetime.datetime(1970,1,1,0,0,0) for _ in range(int(input())):ls input().split()end datetime.datetime.strptime(ls[0]ls[1],&quo…...
虚幻基础:蓝图常用节点
文章目录 timelinedelay/retriggerable:计时器:计时后的代码只执行一次delay:计时期间不可再触发,走完后再触发。retriggerable:计时期间可重复触发,触发则刷新计时时间。 doOnce:只可触发一次&…...
使用kubeadm方式以及使用第三方工具sealos搭建K8S集群
目录 kubeadm方式: 一、安装要求 二、环境准备 二、安装Docker、kubeadm、kubelet 1、安装Docker (1)首先配置一下Docker的阿里yum源 (2)然后用yum 方式安装docker (3)配置Docker镜像加速器 &#…...
ELK traceId实现跨服务日志追踪
ELK怎么实现跨服务日志追踪,Trace-Id 具体实现方案及代码_kibana关联其他服务器的日志-CSDN博客 ELKMDC追踪日志 ---- SpringCloud实现传递_elk的mdc-CSDN博客 SpringBoot之HandlerInterceptor拦截器的使用 ——(一)-CSDN博客 在使用ELK&a…...
2025 linux系统资源使用率统计docker容器使用率统计docker监控软件Weave Scope安装weavescope
1.Weave Scope介绍 Weave Scope 是一款用于监控和可视化 Docker 容器、Kubernetes 集群以及分布式应用的强大工具。它的设计目标是帮助开发者和运维人员更好地理解和管理复杂的微服务架构。以下是 Weave Scope 的主要优点: 1. 实时可视化 Weave Scope 提供了一个直…...
通过特征值和特征向量实现的图像压缩和特征提取
前文,我们在学习人工智能的线性代数基础的时候,就了解到,矩阵在人工智能中被广泛使用,接下来我们就从大家非常常见的图像开始,深度理解矩阵在人工智能中的应用。有关线性代数基础的文章可以看的我CSDN:人工智能中的线性…...
html-to-image的使用及图片变形和无图问题修复
html-to-image的使用及图片变形和无图问题修复 最近迭代的时候因为新增了一个需求,需要前端提供素材及样式给后端,后端同步渲染,但是因为部分样式问题后端无法实现所以决定前端将页面生成图片然后传递给后端使用,本文记录一下使用…...
【eNSP基础使用教程-1】
座右铭: 纵有疾风起,人生不言弃。 文章目录 前言一、更改设备名称指令1、双击路由器进入2、 进入系统视图3、更改设备名称为R14、使用同样的办法修改路由器R2、R3 二、配置路由物理接口的IP 地址1、查看R1路由器当前接口IP 地址配置与路由表2、查看路由器上的路由表…...
详解SQL数据定义功能
数据定义 1. 数据库模式(Schema)的定义与删除定义模式删除模式 2. 基本表的定义、修改与删除定义表约束1. NOT NULL 约束2. DEFAULT 约束3. UNIQUE 约束4. PRIMARY KEY 约束多列主键示例: 5. FOREIGN KEY 约束6. CHECK 约束7. AUTO_INCREMENT…...
vscode python相对路径的问题
vscode python相对路径的问题 最近使用使用vscode连接wsl2写python时,经常遇到找不到包中的方法的问题,最终发现vscode在执行python代码时目录不是从当前python文件开始算起,而是从当前工作区的目录开始算起,比如说我打开的是/ho…...
通达信软件+条件选股+code
在通达信软件中,你的选股公式需要放在 "公式管理器" 的 "条件选股公式" 分类中。以下是详细操作步骤: 一、打开公式管理器 打开通达信软件,按快捷键 Ctrl + F (或点击顶部菜单栏:"公式" → "公式管理器") 二、创建新公式 选择分…...
机器学习常见激活函数
激活函数的作用 引入非线性因素 若神经网络仅由线性层构成,那么无论网络的层数有多少,其整体的输出依然是输入的线性组合。这样的网络只能拟合线性函数,在处理复杂的非线性问题(如语音识别、图像分类)时能力十分有限。…...
Unreal Engine 5(虚幻引擎)动画制作快捷键大全
Unreal Engine 5 中 动画制作(主要涉及 Sequencer、动画蓝图等模块)的 鼠标操作 与 核心快捷键 整理,按动画制作流程分类: 一、Sequencer 时间轴操作 功能目标鼠标操作快捷键说明移动播放头左键点击时间轴标尺区域拖动播放头按住…...
OpenFeign的配置类可以进行哪些配置
1. 日志级别(Logger Level) 工作原理 Feign的日志级别控制了日志输出的详细程度,有助于调试和监控。日志级别包括: NONE:不记录任何信息。BASIC:仅记录请求方法和URL及响应状态码和执行时间。HEADERS&am…...
netcore publish报错 error CS1056: Unexpected character
问题:jenkins netcore publish报错 检查文件编码,发现是:GB2312。转换为:UTF-8-BOM。 问题解决 。...
网页制作14-Javascipt时间特效の显示动态日期
<!doctype html> <html> <head> <meta charset"utf-8"> <title>动态日期</title> </head><script>var today new Date();//获取时间var ytoday.getFullYear();//截取年var mtoday.getMonth();//截取月份,返回0~11v…...
《高效迁移学习:Keras与EfficientNet花卉分类项目全解析》
从零到精通的迁移学习实战指南:以Keras和EfficientNet为例 一、为什么我们需要迁移学习? 1.1 人类的学习智慧 想象一下:如果一个已经会弹钢琴的人学习吉他,会比完全不懂音乐的人快得多。因为TA已经掌握了乐理知识、节奏感和手指…...
【单片机】嵌入式系统的硬件与软件特性
嵌入式系统的软件结构 嵌入式系统的软件结构一般分为 不带操作系统(Bare Metal) 和 带操作系统(RTOS / Linux) 两种。不同的软件架构适用于不同的应用场景,如 简单控制系统、实时控制系统、物联网、工业自动化等。 嵌…...
