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 是一个包含命令行参数…...
数据分布偏移检测:保障模型在生产环境中的稳定性
数据分布偏移检测:保障模型在生产环境中的稳定性 引言 在机器学习系统从开发环境部署到生产环境的过程中,数据分布偏移问题是影响模型性能的主要挑战之一。当训练数据与生产环境中的数据分布不一致时,即使是经过精心调优的模型也可能表现出明显的性能下降。本文将深入探讨…...
redis删除与先判断再删除的区别
在Redis中,“先判断存在再删除”与“直接删除”的区别主要体现在操作效率、原子性保障、并发安全性三个方面,具体对比如下: 1. 操作效率 直接删除:仅需执行DEL命令一次,无论键是否存在均直接操作…...
3.6、数字签名
目录 数字签名数字签名与验证过程 数字签名 数字签名是签名者使用自己的私钥对待签名数据的哈希值做密码运算得到的一个结果 第一签名者用自己的私钥来对我们待签数据的哈希值进行签名,直接对数据进行签名其实也是可以的,只是对数据签名,这…...
华为手机助手输入连接码时光标乱跳
问题复现:输入12345678,光标自动跳转导致连接码出现乱序情况。 千万别试着找出规律,已试动态规律非大牛误轻试 问题原因: 想啥呢?华哥的软件又不是我开发我要Know Why干啥 我只需关心解决方案 (可能时输入…...
本地化部署Deepseek关于Ollama 安全加固方案(新手易学)
本地化部署Deepseek关于Ollama 安全加固方案(新手易学) 本方案针对使用ChatBox调用Ollama部署DeepSeek-R1:14b模型时的安全防护需求,提供四重防护措施。 🔒 一、关闭外网访问(关键步骤) 1. 修改监听地址 …...
C++ STL算法函数 —— 应用及其操作实现
一、STL算法函数分类概述 STL算法库提供了大量实用函数,按功能可分为以下五类: 1. 不修改序列的操作 定义:这些算法不会改变容器中的元素,仅对数据进行查询或统计。 典型函数: 函数功能示例find(first, last, value…...
AI数字人:口播与唇形同步的福音,支持本地部署/批量生成/口齿清晰
Heygem:开源前端界面的老六玩家 好消息!Heygem 在 GitHub 上开源了!不过,嘻嘻,只是前端界面开源,感觉更像是来 GitHub 刷一波知名度。不过这依然是个值得关注的工具。让我们先来看看它的官方介绍ÿ…...
【鸿蒙】封装日志工具类 ohos.hilog打印日志
封装一个ohos.hilog打印日志 首先要了解hilog四大日志类型: info、debug、warm、error 方法中四个参数的作用 domain: number tag: string format: string ...args: any[ ] 实例: //普通的info日志,使用info方法来打印 //第一个参数 : 0x0…...
附下载 | 2024 OWASP Top 10 基础设施安全风险.pdf
《2024 OWASP Top 10 基础设施安全风险》报告,由OWASP(开放网络应用安全项目)发布,旨在提升企业和组织对基础设施安全风险、威胁与漏洞的意识,并提供高质量的信息和最佳实践建议。报告列出了2024年最重要的10大基础设施…...
Chatbox通过百炼调用DeepSeek
解决方案链接:评测|零门槛,即刻拥有DeepSeek-R1满血版 方案概览 本方案以 DeepSeek-R1 满血版为例进行演示,通过百炼模型服务进行 DeepSeek 开源模型调用,可以根据实际需求选择其他参数规模的 DeepSeek 模型。百炼平台…...
Vue前端项目部署到宝塔面板的详细过程
目录 前言 一、项目的打包与上传 1、修改前端项目 2、关于test环境的补充修改 3、打包前端项目 二、添加站点,启动项目 三、总结 前言 书接上回 SpringBoot项目部署到宝塔面板的详细过程-CSDN博客 本次以SmartAdmin的项目为例,通过宝塔面板部署…...
免费高质量贴图(Textures) 网站推荐
以下是一些提供 免费或高质量贴图(Textures) 的网站,包括 PBR 贴图、HDRI 贴图、材质等,适用于 Three.js、Blender、Unity、Unreal Engine 等软件。 🌍 1. Poly Haven(https://polyhaven.com/)⭐…...
C++进阶——map和set的使用
目录 1、序列式容器和关联式容器 2、set系列的使用 2.1 set和multiset的参考文档 2.2 set类的介绍 2.3 set的构造和迭代器 2.4 set的增删查 2.5 set的insert和迭代器遍历 2.6 set的find和erase 2.7 set的lower_bound和upper_bound 2.8 multiset和set的差异 2.9 349.…...
AI机器学习---Anaconda
Anaconda指的是一个开源的Python发行版本,其包含了Conda、Python等180多个科学包及其依赖项。因为包含了大量的科学包,Anaconda 的下载文件比较大(约 531 MB),如果只需要某些包,或者需要节省带宽或存储空间…...
如何在Futter开发中做性能优化?
目录 1. 避免不必要的Widget重建 问题:频繁调用setState()导致整个Widget树重建。 优化策略: 2. 高效处理长列表 问题:ListView一次性加载所有子项导致内存暴涨。 优化策略: 3. 图片加载优化 问题:加载高分辨率…...
leetcode 75.颜色分类(荷兰国旗问题)
题目描述 题目分析 本题是经典的「荷兰国旗问题」,由计算机科学家 Edsger W. Dijkstra 首先提出。 要想单独解决这道题本身还是很简单的,统计0、1、2的数量然后按顺序赋值,或者手写一个冒泡排序,whatever。 但是在这一题中我们主…...
JVM--垃圾回收
垃圾回收的概念 垃圾回收主要针对的是堆中的对象,堆是一个共享的区域,创建的对象和数组都放在这个位置。但是我们不能一直的创建对象,也不是所有的对象能一直存放,如果不进行垃圾回收,内存迟早会耗尽,及时…...
Spring boot3-Http Interface: 声明式编程
来吧 1.首先引入pom.xml依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId> </dependency> 2.创建WebClientController控制器 import com.atguigu.boot3_07_http.serv…...
springboot EasyExcel 实现导入导出
1. 添加依赖 确保 Maven 依赖中包含 EasyExcel 3.0.5: <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.5</version></dependency><!-- excel工具 --><dep…...
基于RAGFlow本地部署DeepSpeek-R1大模型与知识库:从配置到应用的全流程解析
作者:后端小肥肠 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 姊妹篇: DeepSpeek服务器繁忙?这几种替代方案帮你流畅使用!(附本地部署教程)-CSDN博客 10分钟上手…...
spring 创建单例 Bean 源码分析
一、创建单例Bean 1、创建单例 Bean 通过方法getBean()来创建单例bean。 代码入口: org.springframework.beans.factory.support.DefaultListableBeanFactory#preInstantiateSingletons spring boot version:2.6.13 org.springframework.beans.factory…...
GetCurrentTime
在实际编程中难免要获取当前时间并且进行格式化,本文给出了多种 GetCurrentTime() 方法以供选择。 C语言下使用strftime C 语言中可以使用 <time.h> 中的函数来获取和格式化时间 #include <stdio.h> #include <time.h>char* getCurrentTime() …...
HTB 学习笔记 【中/英】《Web 应用简介》P1
📌 这篇文章讲了什么? 介绍了 Web 应用 的概念、架构,以及与传统网站的区别。重点讲解了 Web 安全风险,包括 常见攻击方法(SQL 注入、文件包含、不安全的文件上传等)。介绍了 Web 渗透测试 的重要性&#…...
ROS catkin_make编译报错问题
对问题 CMake Error at graduation_design/CMakeLists.txt:226 (add_dependencies): The dependency target "graduation_design_generate_messages_cpp" of target "listener" does not exist 检查 generate_messages() 是否被注释 对 CMake Error at …...
【结构设计】3D打印创想三维Ender 3 v2
【结构设计】3D打印创想三维Ender 3 v2 文章目录 前言一、Creality Slicer1.2.3打印参数设置二、配件更换1.捆扎绑扎线2.气动接头3D打印机配件插头3.3D打印机配件Ender3pro/V2喷头套件4.读卡器 TF卡5.micro sd卡 三、调平四、参考文章总结 前言 使用工具: 1.创想三…...
并发编程2
接并发编程1 synchronized锁的实现 通过底层指令控制实现,Java提供的一种原子性内置锁,在进入synchronized后会从主内存复制一份共享变量到自己的工作内存,在工作内存中修改完成后,退出时会把工作内存的值写入到主内存ÿ…...
Linux 中 Git 使用指南:从零开始掌握版本控制
目录 1. 什么是 Git? Git 的核心功能: 2. Git 的安装 Ubuntu/Debian 系统: 验证安装: 3.gitee库 4. Git 的首次配置 配置用户名和邮箱: 查看配置: 5. Git 的基本使用 初始化仓库 添加文件到暂存区…...
C# Exe + Web 自动化 (BitComet 绿灯 自动化配置、设置)
BitComet GreenLight,内网黄灯转绿灯 (HighID), 增加p2p连接率提速下载-CSDN博客 前两天写个这个,每次开机关机后要重来一遍很麻烦的索性写个自动化。 先还是按照上面的教程自己制作一遍,留下Luck 以及 路由器相关的 端口记录信息。 (因为自…...
2024年12月CCF-GESP编程能力等级认证C++编程四级真题解析
四级真题的难度: 一、总体难度评价 CCF-GESP编程能力等级认证C++四级真题的难度通常被认为相对较高。它不仅要求考生具备扎实的C++编程基础,还需要考生掌握一定的算法和数据结构知识,以及良好的问题解决能力。 二、具体难度分析 理论知识考察: 单选题和判断题中,会涉…...
谷歌Chrome或微软Edge浏览器修改网页任意内容
在谷歌或微软浏览器按F12,打开开发者工具,切换到console选项卡: 在下面的输入行输入下面的命令回车: document.body.contentEditable"true"效果如下:...
《DeepSeek深度使用教程:开启智能交互新体验》Deepseek深度使用教程
《DeepSeek使用教程:开启智能交互新体验》 在当今数字化时代,人工智能技术正以前所未有的速度改变着我们的生活和工作方式。DeepSeek作为一款强大的人工智能工具,凭借其卓越的自然语言处理能力和多领域应用潜力,受到了众多开发者…...
Dijkstra算法
Dijkstra算法(迪杰斯特拉算法)是一种经典的单源最短路径算法,用于在加权图中找到从一个源点到所有其他顶点的最短路径。它要求图中不能有负权边,因为负权边可能会导致算法的贪心策略失效。 Dijkstra算法的基本思想 Dijkstra算法…...
Python中的静态方法如何使用?
在Python里,类当中的方法可以分为多种不同的类型,其中staticmethod是一个十分有趣而又实用的功能。我们来好好地聊一聊什么是静态方法,它的用途是什么,以及如何在实际应用中使用它们! 首先,定义一下静态方…...
【最后203篇系列】016 Q201架构思考
前言 Q200已经达到了我既定的目标,在最近的3个月,我需要进一步完善,达到可以试产的程度。 在这个过程当中,许多知识和体会一直在变。 qtv200到目前,虽然通过习惯(每晚运行离线策略和比对)方式维持了注意力的集中&…...
小脑萎缩会致命吗?
小脑萎缩,顾名思义,是指小脑的体积减小或结构发生异常,进而影响其正常功能。小脑作为人体重要的协调和运动控制中心,负责维持身体平衡、调节肌肉张力和协调运动等关键功能。当小脑出现萎缩时,患者可能会出现步态不稳、…...
pip install和conda install的区别
这里写目录标题 一、什么是 Python 依赖(Python Dependencies)?1. 依赖的作用2. 如何管理 Python 依赖3. 依赖管理问题4. 依赖锁定总结 二、使用pip安装包venv隔离环境方法 1:使用 venv(推荐)创建虚拟环境激…...
這是我第一次寫關於aapenal服務器管理控制面板的文章
首先我們來認識一下服務器管理面板的所有功能 網站管理功能: 支持創建和管理多個網站。配置虛擬主機(Vhost)和域名綁定。自動安裝常用應用(如WordPress、Joomla等)。 文件管理功能: 文件上傳、…...
requests库的request和response对象的属性和方法
Python requests库 request 参数信息 response 参数信息...
8664蛋糕的美味值
8664蛋糕的美味值 ⭐️难度:中等 🌟考点:枚举 📖 📚 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in );int n sc.nextInt();int k s…...
【MySQL】数据库简要介绍和简单应用
目录 数据库简要介绍 SQL 的简单应用 需要注意的: 数据库简要介绍 数据库(database)是指长期存储在计算机内,有组织的、可共享的数据集合。它可视为一个电子化的文件柜,用来存储电子文件,用户可以对文件中的数据进行査询、新增、更新、删…...
yolo环境 pytorch环境配置 CUDA安装
我的成功案例:首先安装python 3.12.9的conda虚拟环境 (如果不安装3.12的会报错误ModuleNotFoundError:没有名为“numpy._core”的模块) 然后安装11.8cuda (其实我是可以最高安装12.6的cuda但我实测,太高版…...
camellia redis proxy v1.3.3对redis主从进行读写分离(非写死,自动识别故障转移)
1 概述 camellia-redis-proxy是一款高性能的redis代理(https://github.com/netease-im/camellia),使用netty4开发,主要特性如下: 支持代理到redis-standalone、redis-sentinel、redis-cluster。支持其他proxy作为后端…...
python相关语法的学习文档1
python相关语法的学习文档1 1、tqdm tqdm 是 Python 中一个非常流行的进度条库,可以实时显示循环或任务的进度。它简单易用,支持多种场景(如循环、文件处理、多线程/进程等)。以下是详细的使用讲解: 1.1 安装 pip install tqdm1.2 基本用法 from tqdm import tqdm impo…...
Web元件库 ElementUI元件库+后台模板页面(支持Axure9、10、11)
Axure是一款非常强大的原型设计工具,它允许设计师和开发者快速创建高保真原型,以展示应用或网站的设计和功能。通过引入各种元件库,如ElementUI元件库,可以极大地丰富Axure的原型设计能力,使其更加贴近实际开发中的UI组…...
Java 并发编程——BIO NIO AIO 概念
参考 Java 并发编程——BIO NIO AIO 概念 阻塞与非阻塞、同步与异步概念 系统调用、缓存、物理设备阻塞与非阻塞同步与异步 四种主要的 IO 模型 同步阻塞 IO同步非阻塞 IOIO 多路复用异步 IO select,poll,epoll 系统调用命令...
在微信小程序或前端开发中,picker 和 select 都是用户交互中用于选择的组件,但它们在功能、设计和使用场景上有一定的区别
在微信小程序或前端开发中,picker 和 select 都是用户交互中用于选择的组件,但它们在功能、设计和使用场景上有一定的区别。 1. picker 的特点 描述: picker 是微信小程序中的原生组件,通常用于选择单项或多项值,如时…...
笔记本 Win10 部署阿里通义千问 1.5-0.5B 大模型 mini 版
文章目录 1.环境准备1.1 硬件环境1.2 OS 环境1.3 Python 环境 2.环境安装2.1 CUDA 驱动下载安装2.2 torch 库下载安装2.3 transformers 库安装2.3 accelerate 库安装2.4 验证 CUDA 是否可用2.5 下载 Qwen1.5-0.5B 大模型 3.测试大模型3.1 加载大模型3.2 简单对话3.3 亲测体验感…...
SpringBoot事件驱动
1、概述 Spring事件驱动采用了观察者设计模式,主要作用就是实现对象之间的松耦合通信。它的核心思想是通过事件的发布和监听来实现不同组件之间的交互。(跟mq挺像) 基础概念: 事件(Event): 在Spring中&am…...
nginx中间件部署
普通权限账户安装NGINX中间件 1、拥有高级权限的账户安装必要的插件 sudo yum install -y gcc-c make pcre pcre-devel zlib zlib-devel openssl openssl-devel 2、普通账户进行NGINX的脚本式安装 vi nginx_intall.sh #!/bin/bash TAR_NAME"$1" TAR_NAME_DIRba…...