首页/新闻资讯/正文详情

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

发布时间:2026/11/3 19:27:23 来源:云帆数科 栏目:资讯中心
程序的数据别只活在内存里!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:27:23

什么是Unlimited-OCR-2?OCR-3.0时代百度无限文档解析模型完整指南
什么是Unlimited-OCR-2?OCR-3.0时代百度无限文档解析模型完整指南

人工智能计算机视觉OCR多模态大模型 【免费下载链接】Unlimited-OCR-2 项目地址: https://ai.gitcode.com/hf_mirrors/baidu/Unlimited-OCR-2 点击查看 免费下载 Unlimited-OCR-2 是百度开源的超长文档解析模型(OCR 模型),主打&q… · 2026/11/3 19:26:23

Batch任务凌晨就提交,为什么仍错过08:00?把截止、兜底和去重补上
Batch任务凌晨就提交,为什么仍错过08:00?把截止、兜底和去重补上

凌晨提交了一批AI摘要,08:00打开页面却发现任务还没完成。遇到这种情况,先确认程序有没有把“提交成功”当成“结果可用”:Batch是异步执行方式,拿到任务编号,并不代表已经生成了所有可交付的结果。 如果内容有明确截止… · 2026/11/3 19:26:23

Firefox中文语言包安装与失效排查:版本匹配与多平台配置
Firefox中文语言包安装与失效排查:版本匹配与多平台配置

帮别人装浏览器这种事我干过不少回,最常被追问的一句话就是——为什么装完之后界面还是英文的?Firefox 中文语言包的安装方法看着简单,真动手的时候却总在几个地方卡住:语言包版本差一位装不上、xpi 文件拖进去没反应、装完重启还… · 2026/11/3 20:01:37

Yarn多平台安装指南与工程化实践
Yarn多平台安装指南与工程化实践

1. Yarn安装前的必要认知作为一名长期使用Node.js生态的前端开发者,我深刻体会到包管理工具的重要性。Yarn作为npm的替代方案,其核心价值在于确定性的依赖管理和卓越的安装速度。在开始安装前,我们需要明确几个关键点:Yarn的版本体… · 2026/11/3 20:01:37

RabbitMQ核心概念与高可用架构实战指南
RabbitMQ核心概念与高可用架构实战指南

1. RabbitMQ 核心概念解析RabbitMQ作为AMQP协议最成熟的实现方案,本质上是一个面向消息的中间件(MOM)。它采用Erlang语言开发,这种天生支持高并发的函数式语言赋予了RabbitMQ卓越的吞吐能力——单节点实测可达每秒数万级消息处理。… · 2026/11/3 20:01:37

RabbitMQ消息队列:核心概念与实战应用指南
RabbitMQ消息队列:核心概念与实战应用指南

1. RabbitMQ核心概念解析RabbitMQ是一个开源的消息代理和队列服务器,基于AMQP(高级消息队列协议)实现。它就像邮局系统一样工作:生产者(发送方)将消息投递到RabbitMQ服务器(邮局)&am… · 2026/11/3 20:01:37

动态规划解决股票买卖问题:原理与Python实现
动态规划解决股票买卖问题:原理与Python实现

1. 动态规划在股票买卖问题中的应用价值股票买卖时机选择一直是投资者面临的核心难题。121题"买卖股票的最佳时机"作为算法领域的经典问题,完美展示了动态规划在金融决策中的强大能力。这道题要求我们在只允许一次买卖操作的限制下,找到能获得… · 2026/11/3 20:01:37

EtherCAT从站控制器LAN9252原理与工程实践解析
EtherCAT从站控制器LAN9252原理与工程实践解析

简介:这份PDF培训材料面向工业自动化、嵌入式控制与工业互联网方向的学习者和工程师,围绕EtherCAT实时以太网协议及Microchip LAN9252从站控制器展开,适合需要理解从站开发、网络通信与实时同步机制的读者。内容从EtherCAT的周期时间、低抖动… · 2026/11/3 20:00:36

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

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

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* 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 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* 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 5:52:46

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与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:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* 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:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的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:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

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

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* 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 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* 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 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码