Python第二语言(五、Python文件相关操作)
目录
1. 文件编码的概念
2. 文件的读取操作
2.1 什么是文件
2.2 open()打开函数
2.3 mode常用的三种基础访问模式
2.4 文件操作及案例
3. 文件的写入操作及刷新文件:write与flush
4. 文件的追加操作
5. 文件操作的综合案例(文件备份操作)
1. 文件编码的概念
常见:UTF-8、GBK、Big5编码等等..与Java一样,所有的计算机编码概念都一样,类型不一样。
2. 文件的读取操作
2.1 什么是文件
内存中存放的数据在计算机关机后就会消失。要长久保存数据,就要使用硬盘、光盘、U盘等设备。为了便于数据的管理和检索,引入了“文件”的概念。
一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名。操作系统以文件为单位管理磁盘中的数据。一般来说,文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别。
2.2 open()打开函数
(使用Python操作文件就需要用到open函数)
# open()打开函数
# open(name, mode, encoding)
# name: 是要打开的目标文件名的字符串(可以包含文件所在的具体路径)
# mode: 设置打开文件的模式(访问模式):只读\写入\追加等
# encoding: 编码格式(推荐UTF-8) 在这里需要用关键字参数直接指定,因为encoding不是位置参数
f = open("pythonLearn", 'r', encoding="UTF-8")
# f是`open`函数的文件对象
print(f.read()) # 读取文件内容

2.3 mode常用的三种基础访问模式
(mode是open函数的第二个参数,其作用是对文件的操作方式)
open函数中的'w'操作,当前文件打开后,既第一次打开文件的时候会清空文件,但是打开文件后,并没有关闭他,且不断的往里面写入数据,因此可以做到一个备份文件操作。
| 模式 | 描述 |
| r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
| w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。如果该文件不存在,创建新文件。 |
| a | 打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后,如果该文件不存在,创建新文件进行写入。 |
2.4 文件操作及案例
- 当前f的代表open读取文件后的赋值
![]()
1. 文件读取操作( 文件对象.read() || 文件对象.readlines() )
- read() || readlines() 使用注意:当前文件被两个read同时读取的时候,第二个read会从第一个read读取的结尾处继续读取。
- readlines() || read() 使用注意:当次文件在之前被读取了之后,使用readlines再次读取文件 虽然方法不一样,但是文件还是被read方法所影响,相当于读取文件的时候会有一个指针,read读取完后指针指向哪个点,剩余读取文件的方法就会继续从当前指针继续读写。
1.1 文件对象.read()方法:
一个文件对象在read时只会读取一次,如果先执行了f.read()方法后,后面的read()读取不会再读取到内容;
f = open("pythonLearn", 'r', encoding="UTF-8")
print(f.read()) # 如果没有传入num, 就会表示读取文件中所有的数据
# print(f.read(4)) # 读取文件内容,可以加上: 文件对象.read(num), num表示读取文件的数据长度(单位是字节)


1.2 文件对象.readlines()方法:
f = open("pythonLearn", 'r', encoding="UTF-8")
# 可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素
print(f.readlines())f.close() # 关闭文件

2. 文件读取操作(文件对象.readline())
它会一行一行读取数据;
f = open("pythonLearn", 'r', encoding="UTF-8")print(f"第一行数据:{f.readline()}")
print(f"第二行数据:{f.readline()}")

3. 文件的读取操作(for循环)
f = open("pythonLearn", 'r', encoding="UTF-8")for line in f:print(f"文件的行数据是:{line}") # 每一个line临时变量,记录了文件的一行数据

4. close关闭文件(当前文件读取完毕后都需要关闭次文件,不然次文件一直会被该程序占用)
f = open("pythonLearn", 'r', encoding="UTF-8")
f.close() # 关闭文件对象,关闭对文件的占用,如果不关闭就代表整个文件一直被python占用
5. with open语法(文件操作后自动关闭)
with open("pythonLearn", 'r', encoding="UTF-8") as f:print(f.readlines()) # 在with open语句块中对文件进行操作,它会自动关闭close文件,避免遗忘

6. 读取文件中一个单词出现的次数案例
6.1 使用count对字符串的指定单词计数:
f = open("pythonLearn", 'r', encoding="UTF-8")# 方式1:读取全部内容,通过count方法统计python单词数量
count = f.read().count("python")
print(f"python在文件中出现了:{count}次")

6.2 使用for循环:
f = open("pythonLearn", 'r', encoding="UTF-8")
count = 0 # 计数
for line in f:line = line.strip() # 去除开头和结尾的空格以及换行符words = line.split(",")for word in words:if word == "python":count += 1
print(f"python出现的次数是:{count}")
f.close()

3. 文件的写入操作及刷新文件:write与flush
- write与flush需要一起使用,因为此写入只是写道了python的内存中(或叫缓冲区),在flush后才是写入到真正的文件中,或者使用close()方法,关闭后会自动flush刷新,这样做是避免频繁的操作硬盘,导致效率下降(一堆,一次性写磁盘;
- write写入文件的时候,如果此文件不存在,那么就会创建一个新文件;
# 1.打开文件
f = open('my_txt', 'w')# 2.文件写入
f.write("# 张三律师")# 3.内容刷新
f.flush()

4. 文件的追加操作
- 'w' 代表mode中的第二种模式,文件存在则清空此文件,写入数据,文件不存在则创建一个新文件,插入数据;
- 'a' 代表mode中的第三种模式,追加数据在文件中;
- 文件不存在会创建文件;
- 文件存在会在最后,追加写入文件;
# 1.打开文件
f = open('my_txt', 'a')# 2.文件追加
f.write("# 尊师重道")# 3.内容刷新
f.flush()

5. 文件操作的综合案例(文件备份操作)
我的思路:open函数中的'w'操作,当前文件打开后,既第一次打开文件的时候会清空文件,但是打开文件后,并没有关闭他,且不断的往里面写入数据,因此可以做到一个备份文件操作。
# 1.打开文件获取文件对象
fr = open('my_txt', "r", encoding="UTF-8")
# 准备写入的文件对象
fw = open('my_text_copy', "w", encoding="UTF-8")for line in fr:line = line.strip() # 去除字符串前后空格fw.write(line) # 写入到新文件fw.write("\n") # 写入后换行fr.close()
fw.close()相关文章:
Python第二语言(五、Python文件相关操作)
目录 1. 文件编码的概念 2. 文件的读取操作 2.1 什么是文件 2.2 open()打开函数 2.3 mode常用的三种基础访问模式 2.4 文件操作及案例 3. 文件的写入操作及刷新文件:write与flush 4. 文件的追加操作 5. 文件操作的综合案例(文件备份操作&#x…...
Vue3 组合式 API:依赖注入(四)
provide() provide() 函数是用于依赖注入的一个关键部分。这个函数允许你在组件树中提供一个值或对象,使得任何子组件(无论层级多深)都能够通过 inject() 函数来访问这些值。 import { provide, ref } from vue; export default { setup(…...
Vue如何引入ElementUI并使用
Element UI详细介绍 Element UI是一个基于Vue 2.0的桌面端组件库,旨在构建简洁、快速的用户界面。由饿了么前端团队开发,提供丰富的组件和工具,帮助开发者快速构建高质量的Vue应用,并且以开放源代码的形式提供。 1. VueElementU…...
VS2019 QT无法打开 源 文件 “QTcpSocket“
VS2019 QT无法打开 源 文件 "QTcpSocket" QT5.15.2_msvc2019_64 严重性 代码 说明 项目 文件 行 禁止显示状态 错误(活动) E1696 无法打开 源 文件 "QTcpSocket" auto_pack_line_demo D:\vs_qt_project\auto_pack_line_de…...
【Golang】Map 稳定有序遍历的实现与探索:保序遍历之道
【Golang】Map 稳定有序遍历的实现与探索:保序遍历之道 大家好 我是寸铁👊 总结了一篇【Golang】Map 稳定有序遍历的实现与探索:保序遍历之道✨ 喜欢的小伙伴可以点点关注 💝 前言🍎 在计算机科学中,数据结…...
使用Nextjs学习(学习+项目完整版本)
创建项目 运行如下命令 npx create-next-app next-create创建项目中出现的各种提示直接走默认的就行,一直回车就行了 创建完成后进入到项目运行localhost:3000访问页面,如果和我下面页面一样就是创建项目成功了 整理项目 将app/globals.css里面的样式都删除,只留下最上面三…...
KUKA机器人KRC5控制柜面板LED显示
对于KUKA机器人新系列控制柜KRC5控制柜来说,其控制柜面板LED布局如下图: 其中①②③④分别为: 1、机器人控制柜处于不同状态时,LED显示如下: 2、机器人控制柜正在运行时: 3、机器人控制柜运行时出现的故障…...
为什么选择Python作为AI开发语言
为什么Python适合AI 在当前的科技浪潮中,人工智能(AI)无疑是最热门的话题之一。无论是自动驾驶、智能推荐还是自然语言处理,AI都在不断改变我们的生活。而在这场技术革命中,Python作为主要的编程语言之一,…...
【算法篇】求最长公共前缀JavaScript版本
题目描述 给你一个大小为 n 的字符串数组 strs ,其中包含n个字符串 , 编写一个函数来查找字符串数组中的最长公共前缀,返回这个公共前缀。 数据范围: 数据范围:0<n<5000,0<len(strsi)< 5000 进阶:空间复杂度 O(1)&a…...
搭建RocketMQ主从异步集群
搭建RocketMQ主从异步集群 1、RocketMQ集群模式 为了追求更好的性能,RocketMQ的最佳实践方式都是在集群模式下完成的。RocketMQ官方提供了三种集群搭建方式: 2主2从异步通信方式:使用异步方式进行主从之间的数据复制。吞吐量大,…...
最大子段和问题
最大子段和问题 分数 15 全屏浏览 切换布局 作者 王东 单位 贵州师范学院 最大子段和问题。给定由n个整数组成的序列,求序列中子段的最大和,若所有整数均为负整数时定义最大子段和为0。 输入格式: 第一行输入整数个数n(1≤n≤1000&…...
Vue3中的常见组件通信之mitt
Vue3中的常见组件通信之mitt 概述 在vue3中常见的组件通信有props、mitt、v-model、 r e f s 、 refs、 refs、parent、provide、inject、pinia、slot等。不同的组件关系用不同的传递方式。常见的撘配形式如下表所示。 组件关系传递方式父传子1. props2. v-model3. $refs…...
MySQL快速入门(极简)
SQL 介绍及 MySQL 安装 一、实验简介 本课程为实验楼提供的 MySQL 实验教程,所有的步骤都在实验楼在线实验环境中完成,学习中请按照实验步骤依次操作。 本课程为 SQL 基本语法及 MySQL 基本操作的实验,理论内容较少,动手实践多…...
CentOS7安装NVIDIA显卡驱动指引【笔记】
CentOS7安装NVIDIA显卡驱动指引【笔记】 实践设备:华硕FX-PRO(NVIDIA GeForce GTX 960M) 环境准备: 1、将系统安装到设备上正常运行; 2、设备网络调试,可以正常访问外网; 3、配置ssh服务(非必要,根据实际情况)。 说明: 本文档所提供的指引和参考主要基于特定实践…...
【RabbitMQ】RabbitMQ配置与交换机学习
【RabbitMQ】RabbitMQ配置与交换机学习 文章目录 【RabbitMQ】RabbitMQ配置与交换机学习简介安装和部署1. 安装RabbitMQ2.创建virtual-host3. 添加依赖4.修改配置文件 WorkQueues模型1.编写消息发送测试类2.编写消息接收(监听)类3. 实现能者多劳 交换机F…...
常见排序算法,快排,希尔,归并,堆排
后面的排序中都要用到的函数 //交换 void Swap(int* p1, int* p2) {int* tmp *p1;*p1 *p2;*p2 tmp; } 包含的头文件 "Sort.h" #pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<time.h> #include<s…...
语法的时态1——一般现在时(1)
定义:一般现在时用来表示经常发生的动作,以及客观事实。 一般现在时的构成以及标志词 1.一般现在时的结构 (1)主系表结构 构成:主语be(am,is,ear)其他。属于状态句。 I…...
JAVA:在IDEA引入本地jar包的方法并解决打包scope为system时发布无法打包进lib的方案
一.引入本地Jar包的步骤 有时maven依耐的包是本地的jar包,此时需要进行以下步骤设置。 步骤1.在pom.xml中添加插件设置,将system范围包含进来,此设置是为了在打包时,本地jar包自动生成到部署包里。(若无法打进包,请参考下文的方…...
Hadoop3:MapReduce源码解读之Map阶段的CombineFileInputFormat切片机制(4)
Job那块的断点代码截图省略,直接进入切片逻辑 参考:Hadoop3:MapReduce源码解读之Map阶段的Job任务提交流程(1) 6、CombineFileInputFormat原理解析 类的继承关系 与TextInputFormat切片机制的区别 框架默认的TextI…...
GPT-4o:OpenAI的最新篇章与深度探索
引言: 在人工智能领域,自然语言处理(NLP)技术持续引领着技术创新的步伐。自2023年引入以来,GPT系列模型一直以其卓越的语言生成能力而闻名,近期的迭代——GPT-4o,更是为这一领域的研究和应用带…...
OpenClaw与nanobot镜像结合:打造个人AI研究助手全流程
OpenClaw与nanobot镜像结合:打造个人AI研究助手全流程 1. 为什么需要个人AI研究助手? 作为一名经常需要阅读大量论文的研究者,我发现自己每天要重复处理许多机械性工作:在多个学术平台检索最新文献、下载PDF并分类存储、提取关键…...
SDMatte惊艳抠图效果展示:10组高难度玻璃/纱布/叶片实测对比图
SDMatte惊艳抠图效果展示:10组高难度玻璃/纱布/叶片实测对比图 1. 开篇:当AI遇见高难度抠图 在图像处理领域,抠图一直是个技术活。特别是遇到玻璃杯、薄纱窗帘、树叶这些半透明或边缘复杂的物体时,传统工具往往力不从心。今天我…...
专利数据挖掘与商业价值转化:开源工具驱动的技术创新与决策变革
专利数据挖掘与商业价值转化:开源工具驱动的技术创新与决策变革 【免费下载链接】patents-public-data Patent analysis using the Google Patents Public Datasets on BigQuery 项目地址: https://gitcode.com/gh_mirrors/pa/patents-public-data 在数字化转…...
RWKV7-1.5B-g1a部署案例:从零搭建轻量中文对话服务,60秒完成API调用
RWKV7-1.5B-g1a部署案例:从零搭建轻量中文对话服务,60秒完成API调用 1. 模型简介 rwkv7-1.5B-g1a是基于新一代RWKV-7架构开发的多语言文本生成模型,特别适合中文场景下的轻量级对话应用。这个1.5B参数的版本在保持较高生成质量的同时&#…...
HunyuanVideo-Foley效果展示:火车进站音效+月台场景视频生成实录
HunyuanVideo-Foley效果展示:火车进站音效月台场景视频生成实录 1. 效果展示开场 想象一下这样的场景:一列蒸汽火车缓缓驶入月台,伴随着汽笛声、铁轨摩擦声和人群嘈杂声。现在,通过HunyuanVideo-Foley技术,我们可以一…...
HP-Socket技术债务管理成熟度提升计划:行动项与时间表
HP-Socket技术债务管理成熟度提升计划:行动项与时间表 【免费下载链接】HP-Socket High Performance TCP/UDP/HTTP Communication Component 项目地址: https://gitcode.com/gh_mirrors/hp/HP-Socket HP-Socket作为高性能TCP/UDP/HTTP通信组件,随…...
Elasticsearch踩坑记录:scaled_float字段查询结果和你想的不一样?
Elasticsearch中的scaled_float:为什么你的查询结果总是不准确? 刚接触Elasticsearch的开发者经常会遇到一个令人困惑的现象:明明存储的是精确的浮点数,查询时却返回了意料之外的结果。这背后往往与scaled_float字段类型的特殊处理…...
Python视频剪辑自动化工具:零基础批量处理指南
Python视频剪辑自动化工具:零基础批量处理指南 【免费下载链接】JianYingApi Third Party JianYing Api. 第三方剪映Api 项目地址: https://gitcode.com/gh_mirrors/ji/JianYingApi 在数字内容创作爆炸的时代,视频剪辑效率提升已成为自媒体人、教…...
Cartographer实战:如何用Velodyne 32E激光雷达跑通GraphSLAM(附避坑指南)
Cartographer实战:Velodyne 32E激光雷达的GraphSLAM全流程解析与性能调优 当Velodyne 32E激光雷达遇上Cartographer的GraphSLAM算法,如何在复杂环境中实现厘米级建图精度?本文将拆解从硬件配置到算法调优的完整落地流程,分享我在大…...
Arduino平台SX1280 2.4GHz LoRa轻量驱动库
1. 项目概述PlugAndPlayForLoRa 是一个面向 Arduino 生态的轻量级 LoRa 物理层(PHY)驱动库,专为 SX1280 射频芯片设计,工作于 2.4 GHz ISM 频段。该库并非协议栈(如 LoRaWAN),而是直接对接 SX12…...
