Python I/O操作笔记

news2024/9/17 4:05:50

打开文件

使用 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 位二进制数)组成的有序集合。字节数组可以用来存储和处理二进制数据。

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1703018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小度推出全球首款基于文心大模型的学习机Z30,仅售价6699元

5月27日,小度科技召开新品发布会,全球首款基于文心大模型的学习机——小度学习机Z30重磅发布。 据「TMT星球」了解,该产品基于文心大模型,重新定义了“AI老师”的能力边界,不仅是一款能为孩子提供全面、有效学习辅导的…

LINUX环境基础练习题(附带答案)

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

嵩山为什么称为五岳之尊

在此之前,人们心目中的五岳之尊一般是东岳泰山。自此以后,观点一定会改变:五岳之尊是中岳嵩山!且听我慢慢道来。 首先将二者进行一下对比—— 中与东的对比,嵩山居中,泰山居东。东方是太阳升起的地方&#…

云原生Kubernetes: 云主机部署K8S 1.30版本 单Master架构

目录 一、实验 1.环境 2.Termius连接云主机 3.网络连通性与安全机制 4.云主机部署docker 5.云主机配置linux内核路由转发与网桥过滤 6.云主机部署cri-dockerd 7.云主机部署kubelet,kubeadm,kubectl 8.kubernetes集群初始化 9.容器网络(CNI)部署…

牛客NC67 汉诺塔问题【中等 递归 Java/Go/PHP/C++】 lintcode 169 · 汉诺塔

题目 题目链接: https://www.nowcoder.com/practice/7d6cab7d435048c4b05251bf44e9f185 https://www.lintcode.com/problem/169/ 思路 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C…

书生·浦语大模型全链路开源体系-作业1

视频链接:书生浦语大模型全链路开源体系_哔哩哔哩_bilibili 1. LLM发展 LLM是近年来人工智能领域的一个重要发展方向。大型语言模型的历史可以追溯到2017年,当时OpenAI推出了GPT-1(Generative Pre-trained Transformer)模型,这是一个基于Transformer架构的语言生成…

论文阅读》学习了解自己:一个粗略到精细的个性化对话生成的人物感知训练框架 AAAI 2023

《论文阅读》学习了解自己:一个粗略到精细的个性化对话生成的人物感知训练框架 AAAI 2023 前言 简介研究现状任务定义模型架构Learning to know myselfLearning to avoid Misidentification损失函数实验结果消融实验 前言 亲身阅读感受分享,细节画图解释…

28【Aseprite 作图】苹果——拆解

1 画苹果框架 左边:第一行 7 第二行 2 第三 四行1 竖着7行 竖着2行 竖着1 、1 行 横着2个 横着4个 苹果可以是左右对称的,完成上述后,水平翻转到右边 2 枝叶 第一行1 左边 2 3 4 行,各1 第5行,竖着4个 再横着3个 右边 竖着3个,然后斜着2个,然后斜着1个 最上面的,两个…

RTDETR结合CVPR2024最新图像增强算法!让你的模型无惧风雨【含端到端推理脚本】

如何有效地探索雨痕的多尺度表示对于图像去雨是很重要的。与现有的基于Transformer的方法相比,这些方法主要依赖于单一尺度的雨痕外观,我们开发了一个端到端的多尺度Transformer,利用各种尺度中潜在有用的特征来促进高质量的图像重建。为了更好地探索空间变化的雨痕的常见退…

九宫格转圈圈抽奖活动,有加速,减速效果

在线访问demo和代码在底部 代码&#xff0c;复制就可以跑 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><tit…

2023idea没有VCS首次提交代码到Git

1、setting 2、vcs------>create git repository 3、右键项目----->Git------>add 4、右键项目------>git------>commit Directory 之后就会显示这个页面(下面写你提交的信息&#xff0c;就是你修改了什么) 点击commit,提交 5、Git--------->push 6、选择…

C++基础:类的继承,public,private,protected

三种继承模式 在上图中: 派生继承 三种继承模式 protected模式中 父类的公有属性和保护属性的成员在子类中都会变为保护属性,只能通过父类或者子类的成员函数调用. 代码示例: #include <iostream> #include <string> using namespace std; //protected class per…

numpy-mkl的下载地址

不要使用pip3直接在终端安装&#xff0c;因为pip3默安装的是numpy&#xff0c;而不是numpymkl。 采用在第三方库中手动下载后&#xff0c;再安装的方式。 第三方库网址&#xff1a;https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 如果不能进入就可以选择去git里面&#x…

代码随想录算法训练营第四十一天 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

理论基础 代码随想录 视频&#xff1a;从此再也不怕动态规划了&#xff0c;动态规划解题方法论大曝光 &#xff01;| 理论基础 |力扣刷题总结| 动态规划入门_哔哩哔哩_bilibili 动归五部曲 1.dp数组以及下标的含义 2.递推公式 3.dp数组如何初始化 4.遍历顺序(例如先背包再…

Python 求积分

文章目录 Part.I IntroductionPart.II 基础知识Chap.I 特殊量的表示Chap.II integrate 函数简析 Part.III 实例Chap.I 一重积分Chap.II 二重积分 Reference Part.I Introduction 高中及大学时代&#xff0c;苦『积分』久矣&#xff0c;当时如掌握了此『黑科技』&#xff0c;课…

【MiniCPM-V】win10本地部署OCR等性能测试

性能尝试 本地配置如下 --------------------------------------------------------------------------------------- | NVIDIA-SMI 546.80 Driver Version: 546.80 CUDA Version: 12.3 | |-----------------------------------------------------…

设计模式17——模板方法模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 模板方法模式&#xff08;Temp…

Java面试八股之自旋是什么意思

Java中的自旋是什么意思 自旋是多线程编程中的一种同步机制&#xff0c;尤其在Java中与锁的实现密切相关。当一个线程尝试获取某个锁&#xff08;如内置锁或显式锁&#xff09;时&#xff0c;如果锁已被其他线程持有&#xff0c;通常的做法是将该线程置于阻塞状态&#xff0c;…

知识融合概述

文章目录 知识融合知识融合过程研究现状技术发展趋势 知识融合 知识融合的概念最早出现在1983年发表的文献中&#xff0c;并在20世纪九十年代得到研究者的广泛关注。而另一种知识融合的定义是指对来自多源的不同概念、上下文和不同表达等信息进行融合的过程认为知识融合的目标是…

02 FreeRTOS 任务

1、创建任务函数 1.1 动态内存的使用 在之前我们如果要创建一个与学生有关的任务&#xff0c;我们会定义&#xff1a; //打印50个学生的信息 char name[50][100]; int age[50]; int sex[50]; //1表示男&#xff0c;0表示女 int score[50]; 如果之后要对其进行修改会非常麻烦&…