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

Python I/O操作笔记

打开文件

使用 open() 函数,其中文件路径可以是相对路径或绝对路径。

模式除了常见的 r(只读)、w(写入,会覆盖原有内容)、a(追加)外,还有一些其他组合模式,如 r+(读写)、w+(读写,会覆盖或创建新文件)、a+(读写,可追加)等。

读取文件

  • read() 函数会一次性读取整个文件的内容,返回一个字符串。如果文件较大,可能会占用较多内存。
  • readline() 每次读取一行内容,返回一个字符串,再次调用会读取下一行,直到文件末尾。
  • readlines() 则将所有行一次性读取并存储到一个列表中,列表中的每个元素是一行内容。

写入文件

write() 方法接收一个字符串作为参数,将其写入到文件中。

关闭文件

调用 close() 非常重要,它确保与文件相关的系统资源被正确释放,避免资源泄漏。如果不及时关闭,可能会导致一些问题,如文件被占用而无法进行其他操作。同时,在使用上下文管理器

(如 with 语句)时,在语句块结束后会自动关闭文件,无需手动调用 close() ,这是一种更简洁和安全的方式。

上下文管理器

上下文管理器是一种编程机制。

简单来说,它定义了在一段代码执行前和执行后的特定行为。

在文件操作中,通过 with 语句使用上下文管理器,在进入 with 代码块时,会自动执行与打开文件相关的操作(比如调用 open 函数打开文件),当代码块执行结束(无论正常结束还是因异常结束),会自动执行后续的清理操作(比如关闭文件)。

它的好处是可以确保相关资源的正确初始化和释放,避免因人为疏忽导致资源未正确处理而引发的问题,使得代码更加简洁、可靠和易于维护。

文件指针

  • 指示当前读取或写入的位置。
  • 使用tell()方法可以查看指针位置
  • 使用 seek() 方法可以将文件指针移动到指定的字节位置。

标准输入输出

  • input() 用于从控制台获取用户输入。
  • print() 用于向控制台输出信息。

二进制文件操作

二进制文件是一种以二进制形式存储信息的文件类型。

与文本文件不同,二进制文件不是以人类可读的字符形式来表示信息,而是使用二进制编码来表示数据。

这些数据可以是各种各样的,比如图像文件中的像素数据、音频文件中的声音波形数据、可执行文件中的机器指令和数据结构等等。

我们依然可以使用 open() 函数来打开二进制文件,只是要添加 'b' 模式标志,比如 open('image.jpg', 'rb') 表示以二进制只读模式打开图像文件。

在读取和写入二进制数据时,通常使用字节数组等方式来处理,以确保数据的准确性和完整性。

字节数组(Byte Array)是一种数据结构。

它是由一系列字节(8 位二进制数)组成的有序集合。字节数组可以用来存储和处理二进制数据。

与普通的数组类似,字节数组中的每个元素都是一个字节,可以通过索引来访问和操作特定位置的字节。

在处理二进制文件等场景中,字节数组常被用来高效地存储和传输二进制数据,方便进行数据的读取、写入、修改等操作。它为处理大量的二进制信息提供了一种方便而灵活的方式。

对于图像、音频等二进制数据,它们有特定的格式和编码规则,在操作时需要遵循这些规则来正确地解析

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 嵌入式之译码器
  • 爬虫之re数据清洗
  • java —— 连接 MySQL 操作
  • Spring Boot Interceptor(拦截器使用及原理)
  • FltSendMessage 超时时间相关问题
  • 华为HCIP认证H12-831新增变题
  • 基于Netty实现安全认证的WebSocket(wss)服务端
  • 知识分享:隔多久查询一次网贷大数据信用报告比较好?
  • qt for android 重新编译Qt6Android.jar
  • 大整数运算详解升级版
  • 速盾:负载均衡能防ddos攻击吗?
  • 学 Java 具体能干什么?
  • 我的创作纪念日——我与CSDN一起走过的128天
  • 选择排序与堆排序
  • Rust开源Web框架Salvo源码编译
  • ----------
  • CentOS从零开始部署Nodejs项目
  • Intervention/image 图片处理扩展包的安装和使用
  • Java Agent 学习笔记
  • Javascript基础之Array数组API
  • js写一个简单的选项卡
  • Linux Process Manage
  • React Transition Group -- Transition 组件
  • SegmentFault 2015 Top Rank
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 实战|智能家居行业移动应用性能分析
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 为视图添加丝滑的水波纹
  • 用element的upload组件实现多图片上传和压缩
  • 用quicker-worker.js轻松跑一个大数据遍历
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • (14)Hive调优——合并小文件
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (7)STL算法之交换赋值
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (zhuan) 一些RL的文献(及笔记)
  • (二)斐波那契Fabonacci函数
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (回溯) LeetCode 40. 组合总和II
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)程序员疫苗:代码注入
  • (转)创业的注意事项
  • .naturalWidth 和naturalHeight属性,
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET 通过系统影子账户实现权限维持
  • .NET 中的轻量级线程安全
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NET应用架构设计:原则、模式与实践 目录预览