Chapter 17 Python文件操作(下)

news2024/9/19 9:15:26

欢迎大家订阅【Python从入门到精通】专栏,一起探索Python的无限可能!

文章目录

  • 前言
  • 一、文件的写入
  • 二、文件的追加


前言

Python作为一种高效且易于学习的编程语言,提供了一系列强大的文件操作功能,使得用户能够轻松地实现文件的读取、写入和管理。本章将详细讲解文件的写入以及追加操作。


本篇文章参考:黑马程序员

一、文件的写入

写入文件使用open函数的”w”模式进行写入,常用的方法有以下两种:

  • wirte():写入内容
  • flush():刷新内容到硬盘中

注意

  • w模式:当文件不存在时会创建新文件
  • w模式:当文件存在时会清空原有内容
# 打开文件
# 如果文件不存在,“w”模式会帮我们创建文件
f=open("D:/test.txt","w",encoding="UTF-8")
f.write("Hello World!")   #内容写入到内存中(即缓冲区中)
# 使程序暂停 500000 秒(约139小时),在此期间程序不会执行任何其他操作。
time.sleep(500000)

双击打开test.txt文本文件,发现内容为空。
在这里插入图片描述
这是因为直接调用write方法,内容并未真正写入文件,而是会积攒在程序的内存中(即缓冲区中)。

  • 缓冲区: 在写入文件时,数据可能被保留在缓冲区中,而不是立即写入磁盘
  • 刷新机制: 当调用close 方法或程序结束时,缓冲区的内容会被自动写入文件
  • 手动刷新: 如果需要在不关闭文件的情况下强制将缓冲区的内容写入磁盘,可以手动调用flush方法

在这里插入图片描述

这种设计可将数据暂时存储在缓冲区,减少对硬盘的写入次数,提高性能。

# 打开文件
f=open("D:/test.txt","w",encoding="UTF-8")
f.write("Hello World!")   #内容写入到内存中
# flush刷新
f.flush()   #将内存中积攒的内容,写入到硬盘文件中
time.sleep(500000)

双击打开test.txt文本文件,内容为“Hello World!”。
在这里插入图片描述
除此之外,close方法内置了flush方法的功能。

# 打开文件
f=open("D:/test.txt","w",encoding="UTF-8")
f.write("Hello World!")   #内容写入到内存中
# 关闭文件
f.close()   # close方法,内置了flush功能

双击打开test.txt文本文件,内容为“Hello World!”。
在这里插入图片描述

# 打开文件
f=open("D:/test.txt","w",encoding="UTF-8")
f.write("Hello World!")

但是我们在实践的过程中会发现,编写如上代码,没有调用flush方法也没有调用close方法,但是运行后双击打开test.txt还是会有"Hello World!"的内容。
在这里插入图片描述
这是因为如果 Python 程序正常结束,操作系统通常会在程序退出时自动刷新未写入的数据到文件

二、文件的追加

追加写入文件使用open函数的”a”模式进行追加,常用的方法有以下两种:

  • wirte():写入内容
  • flush():刷新内容到硬盘中

注意

  • a模式:当文件不存在时会创建新文件
  • a模式:当文件存在时会在原有内容后面继续写入
  • 可使用\n实现换行
# 打开文件
f=open("D:/test.txt","a",encoding="UTF-8")
# write写入
f.write("Hello python!")

# 换行写入
f.write("\nHello everyone!")

# close关闭
f.close()

双击打开test.txt文本文件,内容如下:
在这里插入图片描述

【例题】
有一份账单文件,记录了消费收入的具体记录,内容如下:
name  date  money type remarks
小周,2022-01-01,100000,消费,正式
小周,2022-01-02,300000,收入,正式
小周,2022-01-03,100000,消费,测试
小林,2022-01-01,300000,收入,正式
小林,2022-01-02,100000,消费,测试
小林,2022-01-03,100000,消费,正式
小林,2022-01-04,100000,消费,测试
小林,2022-01-05,500000,收入,正式
小张,2022-01-01,100000,消费,正式
小张,2022-01-02,500000,收入,正式
小张,2022-01-03,900000,收入,测试
小王,2022-01-01,500000,消费,正式
小王,2022-01-02,300000,消费,测试
小王,2022-01-03,950000,收入,正式
小刘,2022-01-01,300000,消费,测试
小刘,2022-01-02,100000,消费,正式
小刘,2022-01-03,300000,消费,正式
请将以上内容复制并保存为 bill.txt文件并满足以下要求:
1.读取文件;
2.将文件内标记为测试的数据行丢弃;
3.将文件写出到bill.txt.bak文件作为备份’

# 打开文件得到文件对象,准备读取
fr= open("D:/bill.txt", "r", encoding="UTF-8")
# 打开文件得到文件对象,准备写入
fw= open("D:/bill.txt.bak", "w", encoding="UTF-8")
# for循坏读取文件
for line in fr:
    # 通过strip方法去除换行符
    line=line.strip()
    # 通过split方法按逗号切分,通过下标[4]得到remarks的内容
    if line.split(",")[4]=="测试":
        continue   #进入下一次循坏,后面的内容跳过
    # 将内容写出去
    fw.write(line)
    # 由于前面对内容进行了strip()的操作去除了换行符
    # 所以要手动加上换行符
    fw.write("\n")

# 关闭文件
fr.close()
fw.close()

运行后双击打开bill.txt.bak文件,文件内容如下:
在这里插入图片描述

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

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

相关文章

深度解析Linux-C——函数和内存管理

目录 函数指针: 指针函数: 参数为指针的函数: 参数为数组的函数: C语言内存管理 stdlib.h头文件常用函数介绍 1、局部变量 2、全局变量 3、 堆空间变量 4、静态变量 5、常量 函数指针: 指向函数的指针&#…

针对datax-web 中Swagger UI接口未授权访问

application.yml 添加以下配置 实现访问doc.html 以及/v2/api-docs 接口时需要进行简单的校验 swagger:basic:enable: trueusername: adminpassword: 12345 配置重启后再进行相关访问则需要输入用户名和密码

Radon(拉当) 变换:超详细讲解(附MATLAB,Python 代码)

Radon 变换 Radon 变换是数学上用于函数或图像的一种积分变换,广泛应用于图像处理领域,尤其是在计算机断层成像 (CT) 中。本文档将详细介绍 Radon 变换的数学含义及其在图像处理中的应用。 数学定义 Radon 变换的数学定义是将二维函数 f ( x , y ) f…

Spark实时(二):StructuredStreaming编程模型

文章目录 StructuredStreaming编程模型 一、基础语义 二、事件时间和延迟数据 三、​​​​​​​容错语义 StructuredStreaming编程模型 一、基础语义 Structured Streaming处理实时数据思想是将实时数据看成一张没有边界的表,数据源源不断的追加到这张表中,这可以让我…

零基础STM32单片机编程入门(二十二) ESP8266 WIFI模块实战含源码

文章目录 一.概要二.ESP8266 WIFI模块主要性能参数三.ESP8266 WIFI模块芯片内部框图四.ESP8266 WIFI模块原理图五.ESP8266 WIFI模块与单片机通讯方法1.硬件连接2.ESP8266模块AT指令介绍 六.STM32单片机与ESP8266WIFI模块通讯实验1.硬件准备2.软件工程3.软件主要代码4.实验效果 …

Super 4PCS配准算法

Nicolas Mellado,CNRS(Centre national de la recherche scientifique,法国国家科学研究中心)的研究员,在IRIT(Institut de Recherche en Informatique de Toulouse,图卢兹计算机科学研究所&…

LeetCode Hot100 搜索二维矩阵

给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。…

自动化测试 pytest 中 scope 限制 fixture使用范围!

导读 fixture 是 pytest 中一个非常重要的模块,可以让代码更加简洁。 fixture 的 autouse 为 True 可以自动化加载 fixture。 如果不想每条用例执行前都运行初始化方法(可能多个fixture)怎么办?可不可以只运行一次初始化方法? 答&#xf…

学习笔记:《用Python进行数据分析》之通用函数

通用函数(即ufunc)是一种对ndarray中的数据执行元素级运算的函数。你可以将其看做简单函数(接受一个或多个标量值,并产生一个或多个标量值)的矢量化包装器。 许多ufunc都是简单的元素级变体,如sqrt和exp&a…

HTML前端面试题之<iframe>标签

面试题:iframe 标签的作用是什么?有哪些优缺点 ? 讲真,刷这道面试题之前我根本没有接触过iframe,网课没讲过,项目实战没用过,但却在面试题里出现了!好吧,我只能说:前端路漫漫&…

通过 C# 写入数据到Excel表格

Excel 是一款广泛应用于数据处理、分析和报告制作的电子表格软件。在商业、学术和日常生活中,Excel 的使用极为普遍。本文将详细介绍如何使用免费.NET库将数据写入到 Excel 中,包括文本、数值、数组、和DataTable数据的输入。 文章目录 C# 在Excel单元格…

uniapp map组件自定义markers标记点

需求是根据后端返回数据在地图上显示标记点&#xff0c;并且根据数据状态控制标记点颜色&#xff0c;标记点背景通过两张图片实现控制 <mapstyle"width: 100vw; height: 100vh;":markers"markers":longitude"locaInfo.longitude":latitude&…

Python 实现股票指标计算——DMA

DMA (Deviation Moving Average) - 平均差 1 公式 DMA 收盘价N1日简单平均 - 收盘价N2日简单平均 AMA M日DMA简单平均 2 数据准备 我们以科创50指数 000688 为例&#xff0c;指数开始日期为2019-12-31&#xff0c;数据格式如下&#xff1a; 3 计算过程 def calculate_d…

构造+有序集合,CF 1023D - Array Restoration

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1023D - Array Restoration 二、解题报告 1、思路分析 先考虑合法性检查&#xff1a; 对于数字x&#xff0c;其最左位置和最右位置 之间如果存在数字比x小&#xff0c;则非法 由于q次操作&#xff0c;第q…

Dav_笔记11:SQL Tuning Overview-sql调优 之 5

构建SQL测试用例 对于许多与SQL相关的问题&#xff0c;获得可重现的测试用例可以更轻松地解决问题。从11g第2版&#xff08;11.2&#xff09;开始&#xff0c;Oracle数据库包含SQL测试用例构建器&#xff0c;它可以自动完成收集和复制尽可能多的有关问题及其发生环境的信息的难…

Asp .Net Core 系列:详解授权以及实现角色、策略、自定义三种授权和自定义响应

什么是授权&#xff08;Authorization&#xff09;&#xff1f; 在 ASP.NET Core 中&#xff0c;授权&#xff08;Authorization&#xff09;是控制对应用资源的访问的过程。它决定了哪些用户或用户组可以访问特定的资源或执行特定的操作。授权通常与身份验证&#xff08;Auth…

vue3 vxe-table 点击行,不显示选中状态,加上设置isCurrent: true就可以设置选中行的状态。

1、上个图&#xff0c;要实现这样的&#xff1a; Vxe Table v4.6 官方文档 2、使用 row-config.isCurrent 显示高亮行&#xff0c;当前行是唯一的&#xff1b;用户操作点击选项时会触发事件 current-change <template><div><p><vxe-button click"sel…

大模型算法面试题(十二)

本系列收纳各种大模型面试题及答案。 1、领域模型Continue PreTrain数据如何选取 在领域模型的Continue PreTrain&#xff08;持续预训练&#xff09;过程中&#xff0c;数据选取是一个至关重要的步骤&#xff0c;它直接影响模型在特定领域上的性能和泛化能力。以下是一些关于…

【资料分享】2024钉钉杯大数据挑战赛A题思路解析+代码演示

2024第三届钉钉杯大学生大数据挑战赛今天已经开赛&#xff0c;【A题】思路解析代码&#xff0c;资料预览&#xff1a;

京东发行稳定币的背后

加密市场很热&#xff0c;京东也要来分一杯羹&#xff1f; 7月24日&#xff0c;据财联社报道&#xff0c;京东科技旗下的京东币链科技 ( 香港 ) 将在香港发行与港元 1:1锚定的加密货币稳定币&#xff0c;在市场上掀起广泛热议。 由于众所周知的监管原因&#xff0c;国内大厂在早…