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

Python5(文件操作)

提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录文件文件读写系统文件管家os 模块路径解剖师os.path 模块文件拷贝 核心知识点高度总结四大板块⚠️ 避坑指南实战中极易犯的 7 大高频错误 暗坑 1滥用 w 模式导致数据被清空灾难级 暗坑 2忘了关闭文件导致内存泄漏 / 文件被锁 暗坑 3读取大文件时直接使用 .read() 或 .readlines() 暗坑 4使用 号拼接文件路径 暗坑 5在 os.walk() 中直接使用 file 打开文件 暗坑 6混淆 mkdir() 和 makedirs() 暗坑 7复制非文本文件图片/视频忘了加 b文件文件的路径1相对路径从当前位置到指定位置的路径。如./hello_world.py./代表当前路径。…/代表上一级路径。2绝对路径:从根目录到指定位置的路径。如E:/Hello/hello.py打开文件使用 open() 打开或创建文件该方法执行完毕之后返回的是一个file对象。open(文件名, 模式)f open(“test.txt”, “w”)模式说明r读写方式只读文件若不存在会报错。默认此模式w读写方式写入写入前清空原有数据。文件不存在会创建文件a读写方式追加写入在原有数据后追加文件不存在会创建文件x读写方式创建新文件并写入文件若已存在会报错b编码方式以二进制打开。一般用于非文本文件如图片等t编码方式以文本模式打开默认此模式能读能写完整形式open(file, # 文件路径mode“r”, # 文件打开模式buffering-1, # 缓冲encodingNone, # 文本编码方式一般用utf8errorsNone, # 报错级别newlineNone, # 区分换行符closefdTrue, # 传入的file参数类型openerNone, # 设置自定义开启器开启器的返回值必须是一个打开的文件描述符)关闭文件f.close()文件读写写数据# 打开文件fopen(test.txt,w)# 写入数据f.write(hello world\n)f.write(nihao python\n)# 关闭文件f.close()读数据read([size]) 可以从文件中读取数据size 表示要从文件中读取的数据的长度单位是字节如果没有传入 size 则读取文件中所有的数据。# 打开文件fopen(test.txt,rt)# 读取文件所有数据print(f.read())# 关闭文件f.close()print(-*20)fopen(test.txt,rt)# 读取文件5个字节数据print(f.read(5))print(f.read(8))f.close()readline([size]) 可以从文件中读取整行数据也可以通过 size 设置读取数据的长度。fopen(test.txt,rt)print(f.readline())print(f.readline(1))#从这一行中读取多少数据不是夺取读取多少行print(f.readline(1))f.close()readlines([size]) 读取所有行并返回列表若给定 size0返回总和大约为 size 字节的行 实际读取值可能比 size 大。fopen(test.txt,r,encodingutf-8)print(f.readlines())# 默认读取所有的行若是使用参数size,则表示读取size行f.close()常用函数函数说明os.rename(old,new)重命名文件os.remove(file)删除文件os.mkdir(dir)创建目录不支持递归创建os.makedirs(dir)递归创建目录os.getcwd()获取当前路径os.chdir(dir)进入指定目录os.listdir(dir)获取目录下文件和目录列表os.rmdir(dir)删除空目录os.removedirs(dir)递归删除空目录os.path.abspath(path)将相对路径转换为绝对路径os.path.basename(path)获取路径中的文件名部分os.path.dirname(path)获取路径中的目录部分os.path.join(*paths)拼接多个路径自动处理路径分隔符os.path.split(path)将路径分割为目录和文件名的元组os.path.splitext(path)将路径分割为文件名和扩展名的元组os.path.exists(path)判断路径是否存在os.path.isfile(path)判断路径是否为文件os.path.isdir(path)判断路径是否为目录os.path.getsize(path)获取文件的大小以字节为单位os.path.getatime(path)获取文件的最后访问时间os.path.getmtime(path)获取文件的最后修改时间这部分笔记涉及的是 Python 中非常核心的文件读写File I/O和操作系统路径管理os模块。为了让你一看就懂我把这些干巴巴的函数分成了4 个家族并用**“光标”和“文件资源管理器”**的概念为你拆解最后我会为你标出新手最容易踩的坑系统文件管家os模块这部分就像是你用鼠标在 Windows 系统里建文件夹、重命名、删文件。os.getcwd()和os.chdir(dir)【我在哪 / 我要去哪】getcwd Get Current Working Directory获取当前工作目录类似 pwd 命令。chdir Change Directory切换工作目录类似 cd 命令。os.rename(old, new)【重命名】就是键盘上的F2键。把old名字改成new。os.remove(file)【删文件】删除一个文件。注意它绝对不能用来删文件夹os.mkdir(dir)vsos.makedirs(dir)【建文件夹单层 vs 递归】⚠️ 核心区别假设你要创建A/B/C这个路径。用mkdir如果A/B不存在直接报错。它只会傻傻地建最后一层。用makedirs超级贴心如果A和B都没有它会顺藤摸瓜把 A、B、C 连串全部建好。os.rmdir(dir)vsos.removedirs(dir)【删文件夹】逻辑和上面一样但有个大坑**它们只能删除“空文件夹”**如果文件夹里哪怕有一张图片都会报错。(补充如果你想强制删除包含文件的非空文件夹需要导入另一个模块shutil.rmtree(dir))。os.listdir(dir)【查看目录内容】返回指定文件夹下所有的文件和文件夹的名字列表只是名字不是完整路径。路径解剖师os.path模块这部分极其常用它的核心工作不是操作文件而是处理代表路径的“字符串”。假设我们有一个路径path C:/Users/Tom/Desktop/data.txt1. 路径切菜机拆解与拼接os.path.basename(path)【要文件名】- 得到data.txtos.path.dirname(path)【要目录】- 得到C:/Users/Tom/Desktopos.path.split(path)【一刀两断】- 得到元组(C:/Users/Tom/Desktop, data.txt)os.path.splitext(path)【只要后缀】- 得到元组(C:/Users/Tom/Desktop/data, .txt)。这招用来判断文件类型比如是不是.csv简直绝杀os.path.join(*paths)【超级胶水】-⭐️ 这是这堆函数里最重要的一个⭐️⚠️ 必知常识Windows 的路径是用反斜杠\的Mac/Linux 是用正斜杠/的。千万不要自己用加号去拼字符串如dir / file代码换个电脑就崩了用os.path.join(C:/Users, Tom, data.txt)它会自动根据你的操作系统拼出绝对正确的路径符号。2. 身份查验员判断真伪os.path.exists(path)这个路径文件或文件夹真的存在吗os.path.isfile(path)它存在并且是个文件吗os.path.isdir(path)它存在并且是个文件夹吗3. 情报搜集员获取属性os.path.abspath(path)把相对路径比如./data.txt变成绝对路径从 C 盘或根目录开始的完整路径。os.path.getsize(path)查大小。返回的是字节Bytes。要算 KB 就除以 1024算 MB 除以 1024*1024。os.path.getatime()/getmtime()查时间aAccess访问时间mModify修改时间。⚠️ 暗坑它返回的是一串看不懂的数字时间戳比如1680123456.78你需要用time或datetime模块把这串数字翻译成 “2023-10-01 12:00:00” 这种人类能看懂的时间。os.walk()递归遍历目录# 返回一个3元组(dirpath文件夹路径, dirnames文件夹名字, filenames文件名)os.walk(top,# 根目录topdownTrue,# 可选默认为True:自顶向下False:自底向上onerrorNone,# 在翻找系统文件时经常会遇到“权限不足Permission Denied”进不去某个房间的情况。默认 None遇到进不去的房间当作没看见直接跳过程序继续跑。如果你传了一个函数给它遇到报错时它就会触发你的函数让你决定是记录日志还是抛出异常。followlinksFalse,# 可选设置为True则通过软链接访问目录)场景我想找出 D:/Python_Project 目录下包括所有子目录所有的 .py 文件并打印出它们的绝对路径importosimportos.path# 定义起点root_dirD:/Python_Project# 启动超级搜救犬# 每次循环解包那三个情报当前路径、子目录列表、文件列表fordirpath,dirnames,filenamesinos.walk(root_dir):# 我们通常不关心子目录叫啥dirnames我们只关心文件forfileinfilenames:# 判断是不是以 .py 结尾的 Python 文件iffile.endswith(.py):# ⭐️ 最致命的暗坑# file 只是个名字比如 main.py# dirpath 是当前位置比如 D:/Python_Project/app# 必须用 os.path.join 把它们拼起来才是这个文件的绝对路径full_pathos.path.join(dirpath,file)print(f找到 Python 文件{full_path})文件拷贝# source_file : 源文件路径# dest_file: 目的地文件路径defcopyFile(source_file_path,dest_file__path):# 打开源文件source_fileopen(source_file_path,rb)# 读取源文件中的内容contentsource_file.read()# 打开目的地文件dest_fileopen(dest_file__path,wb)# 将读取到的数据写入到目的地dest_file.write(content)# 关闭源文件source_file.close()# 关闭目的地文件dest_file.close()copyFile(D:/mv.png,E:/mv.png)优化这种方式可以不用读取整个文件减小内存压力# source_file : 源文件路径# dest_file: 目的地文件路径defcopyFile(source_file_path,dest_file__path):# 打开源文件source_fileopen(source_file_path,rb)# 打开目的地文件dest_fileopen(dest_file__path,wb)# 读取源文件中的内容contentsource_file.read(1024)whilecontent:# 将读取到的数据写入到目的地dest_file.write(content)# 继续从源文件读取数据contentsource_file.read(1024)# 关闭源文件source_file.close()# 关闭目的地文件dest_file.close()copyFile(D:/mv.png,E:/mv.png)这份关于Python 文件操作与操作系统路径管理的笔记整理得极其扎实尤其是最后那个“优化版的文件拷贝”案例直接点出了实战中非常关键的**“内存管理分块读取”**思想为了让你的知识体系更加坚固我为你进行高度概括的总结并梳理出实战中最容易踩坑的 7 大致命错误。 核心知识点高度总结四大板块这篇笔记的核心其实就是教会你如何让 Python 和电脑的硬盘打交道基础文件读写 (File I/O)核心动作打开(open) - 操作(read/write) - 关闭(close)。模式选择读(r)、写(w清空/a追加)、二进制(b)。读取粒度全量读(read())、逐行读(readline())、多行读成列表(readlines())。路径字符串的“外科手术” (os.path)核心定位它不操作真文件只负责处理表示路径的字符串。拿手绝活拼装(join)、切割(split/splitext)、查属性(exists/getsize)。系统层面的文件管家 (os)核心定位相当于你在电脑上右键执行的操作。拿手绝活改名(rename)、删除(remove)、建文件夹(mkdir/makedirs)。终极地毯式搜索 (os.walk)核心定位递归遍历目录的超级雷达。产出物每次循环给你 3 个情报当前路径、子文件夹列表、文件列表。⚠️ 避坑指南实战中极易犯的 7 大高频错误 暗坑 1滥用w模式导致数据被清空灾难级w模式极度危险只要执行open(test.txt, w)哪怕你还没有开始write()文件原有的内容就会瞬间被清空。✅ 避坑如果你只想在文件末尾加内容一定要用a追加模式 暗坑 2忘了关闭文件导致内存泄漏 / 文件被锁每次open()后如果忘了写close()文件会一直被 Python 占用。别人想删删不掉程序跑久了还会导致内存泄漏崩溃。✅ 终极避坑方案强烈建议补充进笔记在现代 Python 开发中几乎不再手动写f.close()而是使用with上下文管理器它会在代码块结束后自动帮你安全关闭文件哪怕中间报错了也能关# 强烈推荐的现代写法withopen(test.txt,r)asf:contentf.read()# 只要离开缩进文件自动关闭不用写 f.close() 暗坑 3读取大文件时直接使用.read()或.readlines()如果你要读取一个 10GB 的日志文件直接f.read()会把 10GB 数据全塞进内存电脑瞬间死机。✅ 避坑像你笔记中优化的那样分块读取Chunking或者直接使用for循环按行迭代这是最优雅的withopen(huge_log.txt,r)asf:forlineinf:# 每次只在内存里加载一行10GB文件也能轻松处理print(line) 暗坑 4使用号拼接文件路径新手特别喜欢写filepath dir / filename。这在 Mac/Linux 上没问题但一拿到 Windows 上反斜杠\程序就崩溃了。✅ 避坑永远、永远使用os.path.join(dir, filename)它会自动适配不同系统的斜杠 暗坑 5在os.walk()中直接使用file打开文件这是你笔记中特别标出的地方也是极其容易忘的os.walk吐出来的filenames列表里仅仅是文件名字如data.csv如果你直接open(file)Python 会在当前运行脚本的目录下找绝对找不到✅ 避坑必须用当前路径加上文件名full_path os.path.join(dirpath, file)。 暗坑 6混淆mkdir()和makedirs()你想创建一个路径data/2023/10/如果data文件夹根本不存在你用os.mkdir()会直接报错FileNotFoundError。✅ 避坑只要路径可能有多层无脑使用os.makedirs(dir, exist_okTrue)。加上exist_okTrue后如果文件夹已经存在也不会报错超级省心 暗坑 7复制非文本文件图片/视频忘了加b在你的文件拷贝案例中你非常准确地使用了rb和wb。如果拷贝图片、音频、压缩包时你只写了r和wPython 会试图把它当成文本去解码直接抛出UnicodeDecodeError报错✅ 避坑只要不是人类能用记事本看懂的纯文本文件全部加上b二进制模式

相关文章:

Python5(文件操作)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录文件文件读写系统文件管家(os 模块)路径解剖师(os.path 模块)文件拷贝🌟 核心知识点高度总结(…...

手把手教你用树莓派GPIO点个灯:从Python到C语言三种方法全搞定

树莓派GPIO实战:Python与C语言点亮LED的三种经典方案 第一次拿到树莓派时,最让人兴奋的莫过于那些整齐排列的GPIO引脚——它们就像通往物理世界的大门。而点亮一个LED,无疑是推开这扇门最经典的"Hello World"。但你知道吗&#xff…...

为什么你的GF-6影像校正总出错?避开UTM投影转换的3个常见坑

为什么你的GF-6影像校正总出错?避开UTM投影转换的3个常见坑 GF-6卫星的宽幅相机(WFV)凭借800公里的超宽覆盖和红边波段等独特优势,已成为农业监测、环境评估等领域的重要数据源。但许多用户在影像校正环节频频遭遇失败——拼接错位…...

手把手教你用FireRed-OCR:5步搞定复杂文档精准解析

手把手教你用FireRed-OCR:5步搞定复杂文档精准解析 1. 为什么选择FireRed-OCR? 在日常工作和学习中,我们经常遇到需要从PDF、扫描件或图片中提取文字和表格的情况。传统OCR工具面对复杂排版时往往力不从心,而FireRed-OCR Engine…...

开源项目Windows Subsystem for Android部署与优化解决方案

开源项目Windows Subsystem for Android部署与优化解决方案 【免费下载链接】WSA Developer-related issues and feature requests for Windows Subsystem for Android 项目地址: https://gitcode.com/gh_mirrors/ws/WSA Windows Subsystem for Android(WSA&…...

浏览器超能力开发指南:解锁Greasy Fork用户脚本的实战手册

浏览器超能力开发指南:解锁Greasy Fork用户脚本的实战手册 【免费下载链接】greasyfork An online repository of user scripts. 项目地址: https://gitcode.com/gh_mirrors/gr/greasyfork 在数字化工作流中,我们每天都在重复着大量机械操作——手…...

最强30B模型GLM-4.7-Flash实测:Ollama一键部署,小白也能玩转AI

最强30B模型GLM-4.7-Flash实测:Ollama一键部署,小白也能玩转AI 1. GLM-4.7-Flash模型概述 1.1 模型特点与优势 GLM-4.7-Flash是当前30B参数级别中最具竞争力的混合专家模型(MoE)。这个规模特别适合需要平衡性能与资源消耗的实际…...

突破式百度网盘直链解析工具:革新性高速下载解决方案

突破式百度网盘直链解析工具:革新性高速下载解决方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 在数字化资源爆炸的时代,百度网盘作为国内领先的云…...

中文文献管理效率提升指南:茉莉花插件的全方位应用

中文文献管理效率提升指南:茉莉花插件的全方位应用 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 在学术研究与文献管…...

OpenClaw商业应用边界:Qwen3-14B在个人网店中的合规使用

OpenClaw商业应用边界:Qwen3-14B在个人网店中的合规使用 1. 为什么个人网店需要AI助手? 去年夏天,我的淘宝小店突然迎来一波流量高峰。每天上百条咨询消息让我应接不暇,经常凌晨还在回复"什么时候发货"这类重复问题。…...

WarcraftHelper:面向魔兽争霸III玩家的全方位优化解决方案

WarcraftHelper:面向魔兽争霸III玩家的全方位优化解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款专为魔兽争…...

网络资源获取困境如何通过猫抓实现高效解决方案?

网络资源获取困境如何通过猫抓实现高效解决方案? 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字时代,网络资源获取已…...

每日 AI 研究简报 · 2026-04-06

(本文借助 AI 大模型及工具辅助整理) 一句话总结:今日AI领域亮点纷呈——Nvidia发布企业级AI Agent平台获17家巨头支持,Claude Code泄露事件引发安全担忧,开源AI Agent生态持续升温。 🌊 AI 动态与趋势 …...

像素幻梦·创意工坊实操手册:批量生成任务队列管理与异步导出机制

像素幻梦创意工坊实操手册:批量生成任务队列管理与异步导出机制 1. 认识像素幻梦创意工坊 Pixel Dream Workshop(像素幻梦创意工坊)是一款基于FLUX.1-dev扩散模型的像素艺术生成工具。它采用16-bit像素风格的现代化界面设计,为创…...

比迪丽模型在Python入门教学可视化中的应用

比迪丽模型在Python入门教学可视化中的应用 让编程初学者通过可视化方式快速理解Python核心概念 1. 教学痛点与解决方案 很多Python初学者在学习过程中会遇到这样的困境:看着密密麻麻的代码,却不知道程序到底是怎么运行的;遇到错误时&#x…...

告别黑盒:手把手教你用Field II和USTB工具箱搭建CPWC超声仿真环境(附完整代码)

从零构建CPWC超声仿真环境:Field II与USTB工具箱实战指南 引言:为什么需要可复现的超声仿真环境? 在医学超声成像研究中,仿真技术扮演着越来越重要的角色。无论是算法验证、系统设计还是教育培训,一个稳定可靠的仿真环…...

Skyvern云服务实战:每月5美元,如何搭建一个自动化的竞品价格追踪机器人

Skyvern云服务实战:每月5美元,如何搭建一个自动化的竞品价格追踪机器人 在当今快节奏的商业环境中,竞品价格监控已成为企业保持市场竞争力的关键。传统的人工监控方式不仅耗时耗力,还容易错过重要的价格变动时机。而市面上的专业竞…...

智能家居中枢:OpenClaw+Qwen3-14B镜像控制HomeAssistant

智能家居中枢:OpenClawQwen3-14B镜像控制HomeAssistant 1. 为什么需要AI驱动的智能家居中枢? 去年装修新房时,我安装了近30个智能设备——从窗帘电机到温湿度传感器,全部接入了HomeAssistant系统。但很快发现一个问题&#xff1…...

3步完成B站视频转文字:免费开源工具bili2text完整指南

3步完成B站视频转文字:免费开源工具bili2text完整指南 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还在为手动记录B站视频内容而烦恼吗&#x…...

如何用League Director制作电影级英雄联盟视频?6个专业技巧让你的录像脱颖而出

如何用League Director制作电影级英雄联盟视频?6个专业技巧让你的录像脱颖而出 【免费下载链接】leaguedirector League Director is a tool for staging and recording videos from League of Legends replays 项目地址: https://gitcode.com/gh_mirrors/le/leag…...

JetBrains IDE试用期到期怎么办?ide-eval-resetter终极指南帮你无缝重置

JetBrains IDE试用期到期怎么办?ide-eval-resetter终极指南帮你无缝重置 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 当你正在进行关键代码调试时,JetBrains IDE突然弹出试用期结束的提…...

华硕笔记本散热难题:3步用G-Helper解决风扇失控与性能调优

华硕笔记本散热难题:3步用G-Helper解决风扇失控与性能调优 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix…...

C#的LINQ查询表达式编译原理与性能优化

C#的LINQ查询表达式编译原理与性能优化 LINQ(Language Integrated Query)是C#中强大的数据查询工具,它将查询能力直接集成到语言中,使开发者能够以声明式方式操作数据。理解其编译原理与性能优化技巧,对于编写高效代码…...

Emotion2Vec+ Large语音情感识别:开箱即用,9种情绪精准分析

Emotion2Vec Large语音情感识别:开箱即用,9种情绪精准分析 1. 语音情感识别技术概述 语音情感识别技术正在改变我们与机器交互的方式。这项技术通过分析语音中的声学特征,能够准确识别说话者的情绪状态。Emotion2Vec Large作为当前领先的语…...

论文阅读:AIED 2025 Understanding University Students‘ Use of Generative AI: The Roles of Demographics an

总目录 大模型相关研究 2025版:https://blog.csdn.net/WhiffeYF/article/details/142132328 Understanding University Students’ Use of Generative AI: The Roles of Demographics and Personality Traits https://arxiv.org/abs/2505.02863 该论文题为《Und…...

CC324条提示词意外泄露——第31条让我出了一身冷汗

324条提示词意外泄露——第31条让我出了一身冷汗 原创 硅谷Alan Walker 硅谷Alan Walker 嘉妍Kea 2026年4月2日 02:47 美国 22人 在小说阅读器中沉浸阅读 当 AI 可以代替你发 Slack、fork 自己,人与 AI 的边界在哪里? src/constants/prompts.ts 57…...

论文阅读:AIED 2024 RuffleRiley: Insights from Designing and Evaluating a Large Language Model-Based Con

总目录 大模型相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 https://arxiv.org/abs/2404.17460 Ruffle&Riley: Insights from Designing and Evaluating a Large Language Model-Based Conversational Tutoring System 📄 …...

GPT-6,曝光了,当 AGI 只剩最后一公里,我们为何仍把 GPU 当燃料?

“土豆”熟了,代号 GPT-6。过去两周,OpenAI 的保密墙像被筛子砸过,4 月 14 日这个日期在内部聊天频道被反复 全员。知情人士说,那天的发布按钮其实已经提前写好,只等 Brockman 一声令下。为什么如此急迫?因…...

网络原理视角下的CasRel模型分布式部署与通信优化

网络原理视角下的CasRel模型分布式部署与通信优化 最近在帮一个团队落地一个关系抽取项目,他们用的就是CasRel模型。模型本身效果不错,但一到线上高并发场景,单实例就扛不住了,响应延迟飙升,还时不时挂掉。这让我意识…...

内存对齐,凭空多出来的空间?

今天学习了一下 C 的结构体(struct)内存,发现这里面的水挺深。如果不了解“内存对齐”,代码很容易就在不知不觉中多占了一堆空间。整理成笔记分享给大家:1. 为什么结构体的大小“不按套路出牌”?先看这个结…...