Python学习——【6.1】文件操作

【6.1】文件操作

一、文件的编码

  问题:计算机只能识别0和1,那么我们丰富的文本文件是如何被计算机识别,并存储在硬盘中的呢?

  答:使用编码技术(密码本)将内容翻译成0和1存入。

  编码技术即翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别的内容。

  计算机中有许多可用编码:

  • UTF-8;
  • GBK;
  • Big5,等等。

  不同的编码,将内容翻译成的二进制也是不同的。所以,文件是以什么编码写入,就应以什么编码读取。

  UTF-8是目前全球通用的编码格式,除非有特殊需求,否则一律以UTF-8格式进行文件编码即可。

二、文件的读取

(一)文件操作的应用

  内存中存放的数据在计算机关机后就会消失。要长久保存数据,就要使用硬盘、光盘、U盘等设备。为了便于数据的管理和检索,引入了“文件”的概念。

  一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名。操作系统以文件为单位管理磁盘中的数据。一般来说,文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别。

  和我们平时对文件的基本操作一样,大概可以分为三个步骤:

  1.打开文件;

  2.读写文件(这一步也可以不做);

  3.关闭文件。

(二)文件的打开、读取、关闭操作

image-20240924095314055

(1)open()打开函数

  在Python中,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下:

# 语法
open(name, mode, encoding)

  name:是要打开的目标文件名的字符串(文件所在路径);

  mode:设置打开文件的模式(访问模式),如只读、写入、追加等;

  encoding:编码格式(推荐使用UTF-8)。

# 示例
f = open("python.txt", "r", encoding="UTF-8")# 注:encoding的参数位置实际上不是顺序的第三位,所以不能用位置参数,应使用关键字参数直接指定

  注意:此时的fopen函数的文件对象。对象是Python中一种特殊的数据类型,拥有属性和方法,可以使用对象.属性对象.方法对其进行访问。

(2)mode常用的三种基础访问模式

image-20240924092036284

(3)读操作相关方法
1.read()方法
# 语法
文件对象.read(num)

  num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。

  示例:

f = open("python.txt", "r", encoding="UTF-8")print(f"读取10个字节的结果是:\n{f.read(10)}")print("------")print(f"读取全部内容的结果是:\n{f.read()}")

  输入结果如下:

读取10个字节的结果是:
床前明月光,
疑是地
------
读取全部内容的结果是:
上霜。
举头望明月,
低头思故乡。

  注意:如果连续调用多次read,那么下一个read函数会在上一个read函数读取的结尾处接着进行读取,而不是每次都从文件开头读取。对于readlinesreadline函数也是相同的机制。

2.readlines()方法
f = open("python.txt", "r", encoding="UTF-8")
content = f.readlines()print(content)  # ['床前明月光,\n', '疑是地上霜。\n', '举头望明月,\n', '低头思故乡。']f.close()  # 关闭文件

  readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

3.readline()方法
f = open("python.txt", "r", encoding="UTF-8")content = f.readline()
print(f"第一行:{content}")content = f.readline()
print(f"第二行:{content}")f.close()
4.for循环读取文件行
for line in open("python.txt", "r", encoding="UTF-8"):print(line)
(4)close()关闭文件对象
f = open("python.txt", "r", encoding="UTF-8")f.close()

  最后通过close关闭文件对象,也就是关闭对文件的占用。如果不调用close,并且程序没有停止运行,那么这个文件将一直被这个Python程序占用。(文件没有关闭,也就是文件一直处于打开状态,那么再对文件进行例如重命名、删除等操作就不能顺利进行了)

(5)with open()语法
with open("python.txt", "r", encoding="UTF-8") as f:f.readlines()

  通过在with open的语句块中对文件进行操作。

  可以在操作完成后自动close关闭文件,避免忘记手动close。

三、文件的写入

# 1.打开文件
f = open("python.txt", "w", encoding="UTF-8")# 2.文件写入
f.write("hello world")# 3.内容刷新
f.flush()# 4.文件关闭
f.close()

  注意:

  1.调用write后,内容还尚未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区;

  2.当调用flush后,内容才会真正写入文件;

  3.采用缓冲区这样的机制,即攒一堆、一次性写入,是为了避免频繁的写入硬盘、导致效率下降。

  4.close自带刷新功能。write之后不调用flush而直接close,也是可以将内容真正写入的。即,close方法自带flush的功能。

  5.对于"w"模式,若文件不存在,则会创建新文件;若文件存在,则会清空文件原有内容、重新写。

四、文件的追加

# 1.打开文件,使用a模式打开即可
f = open("python.txt", "a")# 2.文件写入
f.write("hello world")# 3.内容刷新
f.flush()

  注意:

  1.a模式,文件不存在,会创建文件;

  2.a模式,文件存在,会在最后追加写入文件内容。

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

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

相关文章

第 16 章 神兵利器——optimizer trace 表的神器功效

optimizer trace 功能可以让我们方便地查看优化器生成执行计划的整个过程。 SHOW VARIABLES LIKE optimizer_trace;列名描述QUERY查询语句TRACE优化过程的JSON文本MISSING_BYTES_BEYOND_MAX_MEM_SIZE优化过程文本超过最大长度限制后被忽略的字节数INSUFFICIENT_PRIVILEGES有无…

windows自带的录屏功能好用吗?这4款录屏工具也是不错的选择。

因为现在很多人都会有录屏需求,所以平常使用的一些设备当中会有自带的录屏功能。比如windows10系统下只要按下键盘上的 “WinG” 键,就可打开录屏功能。但是录制的时长会有限制,并且录屏功能会有些限制。如果对录屏有更多的需求,可…

牛客周赛 Round 61 (C++实现)

比赛链接:牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com) 文章目录 1.致十年后的我们1.1 题目描述1.2 思路1.3 代码 2.简单图形问题2.1 题目描述2.2 思路2.3 代码 3. 小红的机器人构造3.1 题目描述3.2 思路3.2.1 问题13.2.2 问题23…

组合优化与凸优化 学习笔记4 凸优化问题

优化问题基本定义 假如f(x)是方圆R以内(R只要大于0就行)最好的一个解 等价问题 就是这种优化函数没啥区别(乘了个系数),约束们也就多了个系数的情况,这和原本的显然一样。这是等价的最简单的例子。 归根结…

微服务(一)

目录 一、概念 1、单体架构 2、微服务 3、springcloud 二、微服务的拆分 1、微服务的拆分原则 1.1 什么时候拆 1.2 怎么拆 2、服务调用 2.1 resttemplate 2.2 远程调用 一、概念 1、单体架构 单体架构(monolithic structure):顾名…

JavaScript动态数据可视化

一、引言 在前端开发中,JavaScript无疑是最核心的技术之一。它能够处理各种交互逻辑,实现复杂的功能。本文将通过一个动态数据可视化的案例,展示如何使用JavaScript实现复杂功能。动态数据可视化能够将大量数据以直观、生动的方式呈现&#…

YOLOv10独家改进:红外场景严重遮挡和重叠目标解决方案 | 一种新的自适应算法轻量级通道分割和变换(ALSS)模块,自适应特征提取优化策略

💡💡💡本文解决什么问题:红外检测场景存在严重遮挡和重叠目标时的局限性的问题点。 💡💡💡提出了一种新的自适应算法轻量级通道分割和变换(ALSS)模块。该模块采用自适应信道分裂策略优化特征提取,并集成信道变换机制增强信道间的信息交换。这改善了模糊特征的提…

5.03TB高清卫星影像更新(WGS84坐标投影)

最近对WGS84版的高清卫星影像数据进行了一次更新,并基于更新区域生成了相应的接图表。 5.03TB高清卫星影像更新 本次数据更新了6191个离线包,共5.03TB大小,并全部生成了更新范围的接图表。 更新范围接图表 更新范围的接图表由每一个离线包…

蓝牙、WiFi、2.4G、Zigbee、LoRa、NB-IoT的区别与应用场景

在现代科技的推动下,无线通信技术已经成为我们生活中不可或缺的一部分。从智能家居到工业自动化,从远程监控到环境传感,每一种技术都有其独特的优势和应用场景。今天,我们将深入探讨六种主流的无线通信技术——蓝牙、WiFi、2.4G、…

详解常见排序

目录 ​编辑 插入排序 希尔排序(缩小增量排序) 选择排序 冒泡排序 堆排序 快速排序 hoare版 挖坑法 前后指针法 非递归版 归并排序 递归版 非递归版 计数排序 声明:以下排序代码由Java实现!!&#xff01…

Python教程: 变量类型

Python 变量类型 变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。 因此,变量可以指定不同的数据类型,这些变量可以存储整…

【计网】从零开始掌握序列化 --- 基础知识储备与程序重构

从零开始掌握序列化与反序列化 1 初识序列化与反序列化2 再谈Tcp协议3 程序重构3.1 Socket类3.2 回调函数设计3.3 最终的Tcp服务器类 1 初识序列化与反序列化 在刚学习计算机网络时,我们谈到过网络协议栈,其中最上层的就是应用层,那么这个应…

97、配置 VXLAN 不同子网互访 (分布式网关)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、基础配置SW1SW2IGP IS-IS 二、VXLAN1.引入库 总结 前言 一、基础配置 SW1 vlan 10 vlan 20interface GigabitEthernet0/0/1port link-type accessport de…

springboot+阿里云物联网教程

需求背景 最近有一个项目,需要用到阿里云物联网,不是MQ。发现使用原来EMQX的代码去连接阿里云MQTT直接报错,试了很多种方案都不行。最终还是把错误分析和教程都整理一下。 需要注意的是,阿里云物联网平台和MQ不一样。方向别走偏了。 概念描述 EMQX和阿里云MQTT有什么区别…

python编程开发“人机猜拳”游戏

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

利用Accelerate()进行pytorch的多GPU加速

简介 官方Github:https://github.com/huggingface/accelerate Accelerate 是为喜欢编写PyTorch模型的训练循环但不愿意编写和维护使用多GPU/TPU/fp16所需的样板代码的PyTorch用户创建的。 它可以仅加速与多 GPU/TPU/fp16 相关的样板代码,并保持其余代…

代码提交消息自动生成助手 | OPENAIGC开发者大赛高校组AI创新之星奖

在第二届拯救者杯OPENAIGC开发者大赛中,涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到,我们特意开设了优秀作品报道专栏,旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者,希望能带给…

hive建表指定列分隔符为多字符分隔符实战(默认只支持单字符)_hive row formate ###

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。 需要这份系统化资料的朋友,可以戳这里获取 一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎…

我国以人名命名的城市有哪些?

我国幅员辽阔,国内的城市非常多,每个城市的名字或许都有其背后的故事。 其中不乏一些以人物之名命名的城市,有些是上古传说中的人物,有些则是历史上有重要影响的人物。 湖北神农架林区,因炎帝神农氏而得名 而我国198…

【Linux网络 —— 网络基础概念】

Linux网络 —— 网络基础概念 计算机网络背景网络发展 初始协议协议分层协议分层的好处 OSI七层模型TCP/IP五层(或四层)模型 再识协议为什么要有TCP/IP协议?什么是TCP/IP协议?TCP/IP协议与操作系统的关系所以究竟什么是协议? 网络传输基本流程…