当前位置: 首页 > article >正文

Python常用函数及常用库整理笔记

文件操作文件夹/目录import os1、os.path.exists(path) 判断一个文件/目录是否存在只要存在相匹配的文件或目录就返回True因此当目录与文件同名时可能报错2、os.path.isdir(fname) 判断目录是否存在必须是目录才返回True3、os.makedirs(path) 多层创建目录4、os.mkdir(path) 创建目录5、os.rmdir(path) 删除目录只能删除空目录6、os.rename(原文件名新文件名) 重命名文件或文件夹注意makedirs与mkdir之间最大的区别是当父目录不存在的时候os.mkdir(path)不会创建os.makedirs(path)则会创建父目录。文件1、os.remove(path) 删除文件2、os.rename(原文件名新文件名) 重命名文件或文件夹3、os.listdir(path) 提取目录下所有文件4、os.path.isfile(fname) 判断文件是否存在必须是文件才返回True5、random.sample(file_list, n) 从file_list中随机选择n个文件--import random6、copyfile(src_path, dst_path) 将src文件内容复制到dst文件中--from shutil import copyfile7、copy(src_path, dst_path) 将src文件复制到dst文件夹中--from shutil import copy8、move(src_path, dst_path) 将src文件剪切到dst文件夹---from shutil import move9、dstos.path.join(path,../for_bitmain/img) 修改文件路径10、str.endswith(suffix[, start[, end]]) 判断字符串是否以指定后缀结尾或指定字符串如果以指定后缀结尾返回True否则返回False。可选参数start与end为检索字符串的开始与结束位置。数据格式链表1、len(list) 长度2、max(list) 最大值3、min(list) 最小值4、del(list)/del(list[i]) 删除链表或某一个元素5、list.append(obj) 插入元素6、list.count(obj) 统计某个元素出现的次数7、list.pop([index -1]) 移除一个元素并返回其值默认是最后一个8、list.sort() 排序9、list.clear() 清除10、list.copy() 复制类特殊函数__init__()等同于类的构造器初始化某个类的一个实例。__del__()等同于类的析构函数析构某个类的一个实例。__call__()使实例能够像函数一样被调用同时不影响实例本身的生命周期__call__()不影响一个实例的构造和析构。但是__call__()可以用来改变实例的内部成员的值。12345678910111213141516171819classX(object):def__init__(self, a, b,range):self.aaself.bbself.rangerangedef__del__(self, a, b,range):delself.adelself.bdelself.rangedef__call__(self, a, b):self.aaself.bbprint(__call__ with {}, {}.format(self.a,self.b)) xInstanceX(1,2,3) xInstance(1,2)__call__ with (1,2)delX一些常用函数1、enumerate(sequence, [start0])为可迭代的序列添加了一个计数器默认从0开始12345678910111213141516171819elements(foo,bar,baz)foreleminelements:...printelem...foobarbazforcount, eleminenumerate(elements):...printcount, elem...0foo1bar2bazforcount, eleminenumerate(elements,42):...printcount, elem...42foo43bar44baz2、 sep.join(seq)seq分隔符可以为空seq要连接的元素序列、字符串、元组、字典连接字符串数组。将字符串、元组、列表中的元素以指定的分隔符连接生成一个新的字符串。12345678910111213141516171819202122#对序列进行操作分别使用 与:作为分隔符 seq1[hello,good,boy,doiido]print( .join(seq1))hello good boy doiidoprint(:.join(seq1))hello:good:boy:doiido#对字符串进行操作 seq2hello good boy doiidoprint(:.join(seq2))h:e:l:l:o: :g:o:o:d: :b:o:y: :d:o:i:i:d:o#对元组进行操作 seq3(hello,good,boy,doiido)print(:.join(seq3))hello:good:boy:doiido#对字典进行操作 seq4{hello:1,good:2,boy:3,doiido:4}print(:.join(seq4))boy:good:doiido:hello常用库tqdm进度条库tqdm模块参数说明12345678910111213classtqdm(object):Decorate an iterable object, returning an iterator which acts exactlylike the original iterable, but prints a dynamically updatingprogressbar every time a value is requested.def__init__(self, iterableNone, descNone, totalNone, leaveFalse,filesys.stderr, ncolsNone, mininterval0.1,maxinterval10.0, minitersNone, asciiNone,disableFalse, unitit, unit_scaleFalse,dynamic_ncolsFalse, smoothing0.3, nestedFalse,bar_formatNone, initial0, guiFalse):iterable: 可迭代的对象, 在手动更新时不需要进行设置desc: 字符串, 左边进度条描述文字total: 总的项目数leave: bool值, 迭代完成后是否保留进度条file: 输出指向位置, 默认是终端, 一般不需要设置ncols: 调整进度条宽度, 默认是根据环境自动调节长度, 如果设置为0, 就没有进度条, 只有输出的信息unit: 描述处理项目的文字, 默认是it, 例如: 100 it/s, 处理照片的话设置为img ,则为 100 img/sunit_scale: 自动根据国际标准进行项目处理速度单位的换算, 例如 100000 it/s 100k it/s常用函数使用方法1.tqdm(iterator)基于迭代器运行123456789101112131415161718importtimefromtqdmimporttqdm, trange#trange(i)是tqdm(range(i))的一种简单写法foriintrange(100):time.sleep(0.05)foriintqdm(range(100), descProcessing):time.sleep(0.05)dic[a,b,c,d,e]pbartqdm(dic)foriinpbar:pbar.set_description(Processing i)time.sleep(0.2)100%|██████████|100/100[00:0600:00,16.04it/s]Processing:100%|██████████|100/100[00:0600:00,16.05it/s]Processing e:100%|██████████|5/5[00:0100:00,4.69it/s]手动进行更新123456789101112importtimefromtqdmimporttqdmwith tqdm(total200) as pbar:pbar.set_description(Processing:)# total表示总的项目, 循环的次数20*10(每次更新数目) 200(total)foriinrange(20):# 进行动作, 这里是过0.1stime.sleep(0.1)# 进行进度更新, 这里设置10个pbar.update(10)Processing::100%|██████████|200/200[00:0200:00,91.94it/s]yacs参数配置库简介yacs是作为一个轻量级库创建的用于定义和管理系统配置比如那些通常可以在为科学实验设计的软件中找到的配置。这些“配置”通常包括用于训练机器学习模型的超参数或可配置模型超参数(如卷积神经网络的深度)等概念。由于您正在进行科学研究所以再现性是最重要的因此您需要一种可靠的方法来序列化实验配置。使用方法1、初始化并赋值12345678910111213141516171819202122232425262728# my_project/config.pyfromyacs.configimportCfgNode as CN_CCN()_C.SYSTEMCN()# Number of GPUS to use in the experiment_C.SYSTEM.NUM_GPUS8# Number of workers for doing things_C.SYSTEM.NUM_WORKERS4_C.TRAINCN()# A very important hyperparameter_C.TRAIN.HYPERPARAMETER_10.1# The all important scales for the stuff_C.TRAIN.SCALES(2,4,8,16)defget_cfg_defaults():Get a yacs CfgNode object with default values for my_project.# Return a clone so that the defaults will not be altered# This is for the local variable use patternreturn_C.clone()# Alternatively, provide a way to import the defaults as# a global singleton:# cfg _C # users can from config import cfg2、解析yaml文件config.yaml123456789101112GPUS: (0,1,2,3)OUTPUT_DIR:outputCUDNN:ENABLED: trueMODEL:NAME:yoloPRETRAINED:xx.pthEXTRA:FINAL_CONV_KERNEL:1STAGE2:NUM_MODULES:1config.py1234567891011121314151617181920212223242526272829303132333435importosfromyacs.configimportCfgNode as CNclassconfig():def__init__(self):self.cfgCN()self.cfg.GPUS(0,1,2,3)self.cfg.OUTPUT_DIRoutputself.cfg.CUDNNCN()self.cfg.CUDNN.ENABLEDTrueself.cfg.MODELCN()self.cfg.MODEL.NAMEself.cfg.MODEL.PRETRAINEDself.cfg.MODEL.EXTRACN()self.cfg.MODEL.EXTRA.FINAL_CONV_KERNEL0self.cfg.MODEL.EXTRA.STAGE2CN()self.cfg.MODEL.EXTRA.STAGE2.NUM_MODULES0defget_cfg(self):returnself.cfg.clone()defload(self,config_file):self.cfg.OUTPUT_DIRself.cfg.defrost()self.cfg.merge_from_file(config_file)self.cfg.freeze()if__name____main__:ccconfig()cc.load(test.yaml)print(cc.cfg)print(cc.get_defalut_cfg())logging日志库 使用方法1、将控制台的输出写入文件中1234567891011121314151617importloggingdefsetLog():log_fileL:/log/console.loghead%(asctime)-15s %(message)slogging.basicConfig(filenamestr(log_file),formathead)loggerlogging.getLogger()logger.setLevel(logging.INFO)consolelogging.StreamHandler()logging.getLogger().addHandler(console)returnloggerif__name____main__:loggersetLog()logger.info(input message)到此这篇关于Python常用函数及常用库整理的文章就介绍到这了

相关文章:

Python常用函数及常用库整理笔记

文件操作文件夹/目录import os1、os.path.exists(path) 判断一个文件/目录是否存在,只要存在相匹配的文件或目录就返回True,因此当目录与文件同名时可能报错2、os.path.isdir(fname) 判断目录是否存在,必须是目录才返回True3、os.makedirs(pa…...

ANSYS Workbench冲压仿真新手避坑:从材料定义到收敛设置的保姆级教程

ANSYS Workbench冲压仿真新手避坑指南:从材料定义到收敛设置的实战精要 第一次打开ANSYS Workbench进行冲压成形仿真时,面对密密麻麻的参数界面,大多数新手都会感到手足无措。材料定义应该选择哪种模型?接触设置中的法向刚度因子取…...

抖音内容获取的革命:从手动保存到智能批量下载的技术演进

抖音内容获取的革命:从手动保存到智能批量下载的技术演进 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...

VLSI宏布局优化:Re2MaP方法解析与实践

1. 宏布局优化技术概述在超大规模集成电路(VLSI)物理设计流程中,宏单元布局是决定芯片性能、功耗和面积(PPA)的关键环节。随着工艺节点不断缩小和设计复杂度持续提升,传统布局方法面临三大核心挑战&#xf…...

<Day-01>从磁场合成到SVPWM:FOC控制核心原理拆解

1. 无刷电机磁场控制的底层逻辑 我第一次接触无刷电机控制时,最困惑的就是"磁场合成"这个概念。想象一下,我们手里拿着三根导线,通过控制电流就能让电机转子乖乖听话——这背后其实是电磁场在起作用。无刷电机的定子绕组就像三个小…...

告别Conda依赖!用Docker一键部署SMC++ v1.15.4,搞定全基因组有效种群历史分析

告别Conda依赖!用Docker一键部署SMC v1.15.4,搞定全基因组有效种群历史分析 在基因组学研究中,有效种群大小的历史分析是理解物种演化历程的关键工具。SMC作为这一领域的明星软件,以其高效的多样本处理能力和对VCF文件的直接支持而…...

12+Spring Session与分布式状态管理

12Spring Session与分布式状态管理 标签: Spring Session, 分布式会话, Redis, Java, 微服务, 会话管理, 分布式系统, 负载均衡 摘要: 在微服务架构全面落地的今天,Session管理早已不是"把用户信息塞进HttpSession"那么简单。当应用…...

Linux中的mv命令

作用:用于移动文件或目录,或者重命名的命令。与cp命令不同,mv命令操作后源文件会消失mv [选项] 源文件 目标文件 mv [选项] 源文件... 目标目录场景本质速度同一文件系统内移动只修改文件名/路径指针极快(瞬间完成)跨文…...

c++如何获取当前可执行文件的版本号信息_GetFileVersionInfo应用【实战】

...

不止是远程桌面:用frp在Windows上轻松搭建个人Web服务并绑定域名(含HTTP/HTTPS配置)

从内网到公网:用frp在Windows上构建专业级Web服务通道 当你在本地开发了一个炫酷的Web应用,或是搭建了家庭NAS管理系统,最令人沮丧的莫过于这些服务只能局限在内网环境中访问。传统的内网穿透方案往往配置复杂、安全性存疑,而云服…...

Linux中的cp命令

cp命令的作用:用于复制文件和目录 1.基本语法: cp [选项] 源文件 目标文件 cp [选项] 源文件... 目标目录 2.常用选项: 选项完整写法说明-i--interactive交互模式,覆盖前提示确认-r--recursive递归复制目录(复制目录…...

从家庭网络到云服务器:CIDR与VLSM在实际场景中的选择与避坑指南

从家庭网络到云服务器:CIDR与VLSM在实际场景中的选择与避坑指南 当你在家中配置路由器时,是否注意到192.168.1.0/24这样的网络标识?或者在企业网络规划中,面对不同部门对IP地址的差异化需求时,如何高效分配有限的地址资…...

Spring Loaded:Java热更新原理与开发效率提升实践

1. 项目概述:一个改变Java开发体验的“热”工具如果你是一个Java开发者,尤其是使用Spring框架的开发者,那么你一定经历过这样的场景:修改了一行业务逻辑代码,满怀期待地刷新浏览器,结果看到的还是旧逻辑。无…...

LSTM超参数调优实战:提升时序预测精度的关键方法

1. 时序预测中的LSTM超参数调优概述在金融、气象、工业设备监控等领域,长短期记忆网络(LSTM)已成为时间序列预测的首选工具。但许多从业者在使用Keras实现LSTM时,常陷入"模型效果不佳→盲目增加网络复杂度→过拟合"的恶性循环。实际上&#xf…...

DRV8833电机驱动避坑指南:为什么你的PWM调速不灵?可能是这几种接线和配置搞错了

DRV8833电机驱动实战疑难解析:从PWM失效到精准调速的深度排错手册 当你第一次将DRV8833电机驱动模块接入STM32开发板,满心期待电机能随着PWM信号优雅旋转时,现实往往给你当头一棒——电机可能纹丝不动、间歇性抽搐或者完全不受控制。这不是你…...

别再头疼EMI了!手把手教你搞定开关电源的传导干扰(附PCB布局实战)

开关电源传导干扰实战指南:从PCB布局到EMC测试通关 电源工程师最怕什么?不是复杂的拓扑计算,也不是热设计难题,而是EMC实验室里那台频谱分析仪上跳动的红色曲线——传导干扰超标。我曾见过一位资深工程师在实验室连续蹲守72小时&a…...

机器学习分类特征编码:原理、方法与实践

1. 机器学习中的分类特征编码实战指南在真实世界的数据分析工作中,我们经常遇到包含分类特征的数据集。这些特征可能是用户的居住城市、产品类型或教育水平等。与数值型数据不同,分类特征无法直接被大多数机器学习算法处理,因为它们本质上是一…...

【解构】DeepSeek V4 发布:技术报告深度解读 + 横向对比六大开源模型,我们的判断是……

前言:今天 AI 圈发生了什么 2026 年 4 月 24 日,DeepSeek 在 HuggingFace 上传了 58 页的 V4 技术报告,同步开源权重。同一天,OpenAI 发布了 GPT-5.5——这个时间节点显然不是巧合。 我把 PDF 完整读完了,结合过去一…...

ACE-GF框架:跨密码学曲线的统一身份管理方案

1. ACE-GF框架核心架构解析ACE-GF(Atomic Cryptographic Entities Generative Framework)是一种革命性的密码学身份管理框架,其核心创新在于通过单一根熵值(REV)实现跨密码学曲线的统一身份管理。这个设计理念源于对现…...

RK809电量计在嵌入式设备上的‘隐藏’功能:除了看电量,还能做什么?

RK809电量计的进阶应用:解锁嵌入式电源管理的隐藏潜能 在智能硬件和便携式设备开发领域,电源管理往往被视为"必要但平凡"的基础功能。大多数开发者对RK809这类电源管理芯片(PMIC)的认知停留在简单的电量百分比读取层面,却忽略了其内…...

从交通拥堵到疫情预测:手把手教你用STGNN模型解决5个城市计算难题

从交通拥堵到疫情预测:STGNN模型实战指南 城市计算领域正迎来一场由时空图神经网络(STGNN)驱动的技术变革。这种能够同时捕捉空间关联与时间动态的AI模型,正在重塑我们对城市复杂系统的理解方式。不同于传统时序预测方法&#xff…...

终极网盘下载加速指南:免费开源助手实现5倍速度提升

终极网盘下载加速指南:免费开源助手实现5倍速度提升 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 还在为网盘下载速度缓慢而烦恼吗?网盘直链下载助手为你提供了一套完…...

STM32CubeMX配置SPI驱动AD7124-8:从时序图到代码实现的避坑全记录

STM32CubeMX配置SPI驱动AD7124-8:从时序图到代码实现的避坑全记录 在嵌入式开发中,高精度ADC的应用往往伴随着复杂的驱动实现。AD7124-8作为ADI公司推出的24位Σ-Δ型ADC,凭借其低噪声、多通道特性,成为工业测量领域的常客。本文将…...

告别Windows Terminal单调CMD:用Oh My Zsh打造你的高效WSL2开发终端

告别Windows Terminal单调CMD:用Oh My Zsh打造你的高效WSL2开发终端 每次在Windows Terminal里敲命令时,看着那个灰扑扑的CMD界面,是不是总觉得少了点什么?作为一名长期在Windows和WSL2之间切换的开发者,我深刻理解那…...

手把手教你为STM32F10x单片机实现OTA升级(附HEX文件解析源码)

手把手教你为STM32F10x单片机实现OTA升级(附HEX文件解析源码) 在嵌入式开发领域,OTA(Over-The-Air)技术正逐渐成为产品标配功能。想象一下,当你的设备部署在偏远地区或高空作业场景时,传统有线升…...

别再傻傻分不清了!Python数据生成三剑客:linspace、arange、range到底怎么选?

Python数据生成三剑客:linspace、arange、range的黄金选择法则 第一次接触Python科学计算时,我也曾被这三个函数搞得晕头转向——明明看起来都能生成数字序列,为什么要有三个?直到在真实项目中踩过几次坑,才明白它们的…...

低成本室内定位方案实测:用两块ESP32-S2搭建WiFi FTM测距系统,精度到底如何?

低成本室内定位方案实测:ESP32-S2 WiFi FTM测距系统精度全解析 在物联网和智能家居领域,精准的室内定位一直是技术难点。传统方案如蓝牙信标或UWB虽然精度较高,但成本让许多中小型项目望而却步。最近,基于WiFi Fine Time Measurem…...

Makefile编译踩坑记:从‘参数太长‘到‘区域溢出‘,一个嵌入式项目的完整排错流程

Makefile编译踩坑记:从参数太长到区域溢出,一个嵌入式项目的完整排错流程 那天下午三点四十七分,当构建服务器第13次抛出Argument list too long错误时,我的咖啡杯已经见了底。这个嵌入式车载控制器的编译问题,就像多米…...

告别重复劳动:用Altium OutJob为你的PCB设计建立标准化交付流水线

硬件团队的效率革命:Altium OutJob标准化交付体系深度实践 在中小型硬件团队中,设计文件的交付环节往往成为效率黑洞。当工程师反复执行相同的Gerber导出、BOM核对、STEP文件生成时,不仅消耗宝贵的设计时间,还容易因人为疏忽导致交…...

告别理论:实测紫光FPGA+LTC2324的麦克风语音采集与千兆网传输全流程

紫光FPGA实战:从麦克风语音采集到千兆网传输的系统级设计 在嵌入式音视频处理领域,实时采集与传输系统一直是工程师面临的经典挑战。当我们需要将物理世界的声波信号转化为数字数据,并通过网络稳定传输到远端分析平台时,整个链路涉…...