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

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 &#xff0c;其中包含n个字符串 , 编写一个函数来查找字符串数组中的最长公共前缀&#xff0c;返回这个公共前缀。 数据范围&#xff1a; 数据范围:0<n<5000&#xff0c;0<len(strsi)< 5000 进阶:空间复杂度 O(1)&a…...

搭建RocketMQ主从异步集群

搭建RocketMQ主从异步集群 1、RocketMQ集群模式 为了追求更好的性能&#xff0c;RocketMQ的最佳实践方式都是在集群模式下完成的。RocketMQ官方提供了三种集群搭建方式&#xff1a; 2主2从异步通信方式&#xff1a;使用异步方式进行主从之间的数据复制。吞吐量大&#xff0c;…...

最大子段和问题

最大子段和问题 分数 15 全屏浏览 切换布局 作者 王东 单位 贵州师范学院 最大子段和问题。给定由n个整数组成的序列&#xff0c;求序列中子段的最大和&#xff0c;若所有整数均为负整数时定义最大子段和为0。 输入格式: 第一行输入整数个数n&#xff08;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 实验教程&#xff0c;所有的步骤都在实验楼在线实验环境中完成&#xff0c;学习中请按照实验步骤依次操作。 本课程为 SQL 基本语法及 MySQL 基本操作的实验&#xff0c;理论内容较少&#xff0c;动手实践多…...

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.编写消息接收&#xff08;监听&#xff09;类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)

定义&#xff1a;一般现在时用来表示经常发生的动作&#xff0c;以及客观事实。 一般现在时的构成以及标志词 1.一般现在时的结构 &#xff08;1&#xff09;主系表结构 构成&#xff1a;主语be(am,is,ear)其他。属于状态句。 I…...

JAVA:在IDEA引入本地jar包的方法并解决打包scope为system时发布无法打包进lib的方案

一.引入本地Jar包的步骤 有时maven依耐的包是本地的jar包&#xff0c;此时需要进行以下步骤设置。 步骤1.在pom.xml中添加插件设置,将system范围包含进来&#xff0c;此设置是为了在打包时&#xff0c;本地jar包自动生成到部署包里。(若无法打进包&#xff0c;请参考下文的方…...

Hadoop3:MapReduce源码解读之Map阶段的CombineFileInputFormat切片机制(4)

Job那块的断点代码截图省略&#xff0c;直接进入切片逻辑 参考&#xff1a;Hadoop3&#xff1a;MapReduce源码解读之Map阶段的Job任务提交流程&#xff08;1&#xff09; 6、CombineFileInputFormat原理解析 类的继承关系 与TextInputFormat切片机制的区别 框架默认的TextI…...

GPT-4o:OpenAI的最新篇章与深度探索

引言&#xff1a; 在人工智能领域&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术持续引领着技术创新的步伐。自2023年引入以来&#xff0c;GPT系列模型一直以其卓越的语言生成能力而闻名&#xff0c;近期的迭代——GPT-4o&#xff0c;更是为这一领域的研究和应用带…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...