程序的数据别只活在内存里!Python 文件读写从 open 到 os 模块一次打通

发布时间:2026/11/3 19:27:21

程序的数据别只活在内存里!Python 文件读写从 open 到 os 模块一次打通 前面程序里的数据都存在内存里 —— 一关程序就全没了。真实应用要把数据持久化到硬盘存配置、存日志、存结果。这就是文件操作。老哥这篇从文件概念讲到读写、再到 os 模块最后用一个文件拷贝实战收尾。一、文件的基本概念文件是存在磁盘上的数据集合。按编码分两类纯文本文件有统一编码UTF-8、GBK 等可看作长字符串二进制文件没有字符编码直接由 0 和 1 组成图片 jpg、视频 avi。路径两种相对路径从当前位置开始./当前目录../上一级如./hello.py绝对路径从根目录开始如E:/Hello/hello.py。二、打开与关闭文件用open()打开或创建文件用完要close()关闭 —— 不关可能丢数据或占资源。f open(test.txt, w) # open(文件名, 模式) # ... 读写操作 ... f.close()6 种核心模式老哥画个表给你表格模式说明r只读文件不存在报错默认w写入先清空原内容不存在会创建a追加写入在末尾追加不存在会创建x创建新文件并写入已存在报错b二进制打开用于图片等非文本可读可写组合使用rt文本只读默认、rb二进制读、wb二进制写、r可读可写。完整形式还支持指定编码中文文件建议写encodingutf-8open(test.txt, r, encodingutf-8)三、写入数据f open(test.txt, w) f.write(hello world\n) f.write(nihao python\n) f.close()四、读取数据的三种姿势1. read ()全读或读指定字节f open(test.txt, rt) print(f.read()) # 读全部 f.close() f open(test.txt, rt) print(f.read(5)) # 读5个字节 print(f.read(8)) # 再读8个字节指针接着走 f.close()2. readline ()读一行f open(test.txt, rt) print(f.readline()) # 读第一行 print(f.readline(1)) # 读第二行的1个字节 f.close()3. readlines ()读所有行返回列表f open(test.txt, r, encodingutf-8) print(f.readlines()) # [hello world\n, nihao python\n] f.close()五、文件指针与常用函数seek / tell—— 控制读写的 光标 位置f open(test.txt, r) f.seek(5) # 把指针移到第5个字节 f.tell() # 返回当前指针位置seek(offset, from)的 from0 开头默认、1 当前位置、2 末尾from 不为 0 时需用二进制模式打开。with语句更省心自动关闭推荐with open(test.txt, r, encodingutf-8) as f: content f.read() # 离开 with 块自动关闭六、os 模块路径和目录操作处理文件还常配合os模块。常用函数import os os.rename(old.txt, new.txt) # 重命名 os.remove(a.txt) # 删除文件 os.mkdir(dir1) # 创建目录不支持递归 os.makedirs(a/b/c) # 递归创建目录 os.getcwd() # 当前工作目录 os.listdir(.) # 目录下文件和目录列表 os.rmdir(dir1) # 删除空目录 # os.path 路径处理 os.path.abspath(hello.py) # 相对路径转绝对路径 os.path.basename(E:/a/b.py) # 取文件名部分 b.py os.path.dirname(E:/a/b.py) # 取目录部分 E:/a os.path.join(E:/a, b.py) # 拼接路径自动处理分隔符 os.path.exists(a.txt) # 判断是否存在 os.path.isfile(a.txt) # 判断是否是文件 os.path.isdir(dir1) # 判断是否是目录 os.path.getsize(a.txt) # 文件大小字节os.walk () 递归遍历目录最常用返回 3 元组import os for root, dirs, files in os.walk(os.getcwd()): print(当前路径, root) print(目录, dirs) print(文件, files) print()七、实战文件拷贝拷贝图片用rb读、wb写逐块读写减小内存压力def copyFile(source_file_path, dest_file_path): source_file open(source_file_path, rb) dest_file open(dest_file_path, wb) content source_file.read(1024) # 一次读 1024 字节 while content: dest_file.write(content) # 写入 content source_file.read(1024) # 继续读 source_file.close() dest_file.close() copyFile(D:/a.png, E:/a.png)用with写法更规范def copyFile(src, dst): with open(src, rb) as sf, open(dst, wb) as df: while content : sf.read(1024): df.write(content) copyFile(D:/a.png, E:/a.png)老哥收尾文件操作的核心就四步open 打开选对模式→ 读 / 写 → close 关闭或用 with。再用 os 模块管路径和目录。一句话收尾写文件用w清空、a追加读文件用r二进制加b中文记得encodingutf-8能用with就别手写 close。到这里 Python 的核心语法你已经打通了。下一篇进入面向对象—— 类和对象。有问题随时回来找老哥。
延伸阅读

更多相关文章

2026/11/3 19:22:20

5.1 变脸游戏

📖实验简介本次实验使用微信小程序加速计 API wx.onAccelerometerChange,实现变脸小游戏。实现两种切换脸谱方式:点击图片切换、摇晃手机切换脸谱;扩展功能:统计并展示累计变脸总次数。 开发环境:微信开发者…

2026/11/3 19:22:20

V. V. Prasolov. Intuitive Topology

V. V. Prasolov 所著的《Intuitive Topology》是拓扑学领域口碑极佳的低门槛入门经典,属于美国数学会《Mathematical World》系列第4卷,全书仅93页,完全以直观可视化的方式讲解初等拓扑核心内容,零基础友好。 📖 基础…

2026/11/3 20:17:26

基于Django与微信小程序的毕业设计导师双向选择系统

1. 项目概述:基于Django与微信小程序的毕业设计导师双向选择系统这个毕业设计选题瞄准了高校教学管理中的一个实际痛点——每年毕业季,学生与导师之间的双向选择过程往往效率低下、信息不对称。传统方式依赖纸质表格或简单线上表单,学生无法全…

2026/11/3 20:17:26

企业邮件安全:从边界防御到智能动态感知架构

1. 企业邮件安全的现状与挑战过去十年间,我参与过数十家企业邮件系统的安全架构设计与升级。最深刻的体会是:传统的边界防御策略正在失效。上周某金融客户的案例就很典型——他们部署了顶级防火墙、反垃圾邮件网关和沙箱系统,但依然被钓鱼邮件…

2026/11/3 20:17:26

GPT-4与ChatGPT辨析:LLM、Transformer与Token实践

简介:《Developing Apps with GPT-4 and ChatGPT》是一份 O’Reilly 出版的英文电子书 PDF,面向希望把大模型能力落地到实际产品的开发者、技术负责人以及生成式 AI 爱好者,重点讨论如何基于 GPT-4 与 ChatGPT 构建智能聊天机器人、内容生成器…

2026/11/3 20:17:26

规格驱动开发:从提示词到可执行代码的实践

1. 项目概述:当提示词遇见规格化编程三年前我第一次尝试用自然语言生成代码时,还需要在GPT对话框里输入大段注释般的描述。如今,在SpecKit工具链的支持下,我只需输入"创建用户注册API,需要邮箱验证和密码强度校验…

2026/11/3 20:17:26

规格驱动开发:从自然语言到可执行代码的自动化实践

1. 项目概述:当提示词遇见规格化编程三年前我第一次尝试用自然语言生成代码时,面对满屏似是而非的函数和混乱的逻辑结构,不得不花费数小时手动修正。而今天在SpecKit工具链的帮助下,同样的需求通过结构化提示词驱动,生…

2026/11/3 20:12:26

Vibe Coding:提升开发效率的心流编程方法论

1. 什么是Vibe Coding?第一次听到Vibe Coding这个词是在一个开发者社区,当时看到有人分享用这种方式完成了一个人月的工作量。简单来说,Vibe Coding是一种强调开发节奏和沉浸感的编程方法论,核心在于通过特定的工具链和工作流&…

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32实战:基于MAX14431数字隔离器的SPI隔离通信方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

工业SPI隔离通信设计:MAX14431BAEE+与STM32L4A6RG实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32+NRF24L01无线抢答器:硬件设计、通信协议与低功耗实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑