【python技巧】文本文件的读写操作

【python技巧】文本文件的读写操作

    • 0. 背景
    • 1. file库的文件操作
      • 1.1 打开文件---file.open()
      • 1.2 读取文件---file.read()
      • 1.3 写入文件---file.write()
      • 1.4 查找内容---file.seek()
    • 2. re库的文本处理
    • 参考资料

0. 背景

最近在写后端接口的时候,需要对.c.conf等类型的文件进行读写操作,在这里整理一下学习收获。

1. file库的文件操作

file库是python中用于处理文件的读取、修改等操作,引入方式为

import file

1.1 打开文件—file.open()

使用open()函数打开文件,语法为:

import file
f=open(file_name="xx.txt", mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

其中,file_name为文件名,mode为打开文件的模式,buffering为缓冲区大小,encoding为编码格式,errors为错误处理方式,newline为换行符,closefd为关闭文件描述符,opener为自定义开启方式。
比较常用的参数为:file_namemodeencoding

  • file_name是文件的绝对路径或者相对路径。

  • mode的常用取值如下:
    在这里插入图片描述

  • encoding的常用取值如下:
    目前常用的文本文件编码格式有:ASCII、GB2312、GBK、GB18030、BIG5、ISO-8859-1、UCS-2、UTF-16、UTF-8。
    其中,ASCII通常为英文字符编码,GB2312、GBK、GB18030、BIG5为中文字符编码,ISO-8859-1为西欧字符编码,UCS-2、UTF-16、UTF-8为通用字符编码。
    在实际编码过程中常用的是UTF-8编码。

1.2 读取文件—file.read()

文件读取的方式有两种:一种是一次性读取所有内容,一种是按行读取。
假设有文件xx.txt,内容如下:

第一行内容;
第二行内容,
第三行内容
第四行内容
……
  • 一次性读取所有内容
import file
with open(file_name="xx.txt", mode='r') as f:content=f.read()#从头到尾进行文件读取
print(content)#打印整个文件内容

输入效果类似于:

第一行内容;第二行内容,第三行内容第四行内容……

read()还可以传入数字,形成read(n),表示读取n个字符。

  • 按行读取
    按行读取有两个函数:readline()readlines()
    其中,readline()是每次读取一行文件内容,readlines()是将文件内容按行读取到一个列表中。
    readline()的使用方法如下:
import file
content_line="读取内容:\n"#设置起始内容
with open(file_name="xx.txt", mode='r') as f:while content_line:##当读取内容不为空的时候print(content_line)#打印整个文件内容content_line=f.readline()#逐行读取文件内容

输入效果类似于:

第一行内容;
第二行内容,
第三行内容
第四行内容
……

readlines()的使用方法如下:

import file
with open(file_name="xx.txt", mode='r') as f:content=f.readlines()#读取全部文件内容,按行分割,形成列表
print(content)#打印整个文件内容,是一个列表格式

输入效果类似于:

[第一行内容;
第二行内容,
第三行内容
第四行内容
……]

1.3 写入文件—file.write()

文件写入的方式有两种:一种是一次性写入所有内容,一种是按行写入。

  • 一次性写入所有内容
import file
content="待写入内容,可以很长"#设置写入内容
with open(file_name="xx.txt", mode='w') as f:f.write(content)#写入文件,这是使用的是覆盖写入
  • 按行写入
    按行写入函数为writelines(),将列表中的内容按行写入文件。
    writelines()的使用方法如下:
import file
content=["写入内容1\n","写入内容2\n","写入内容3\n"]#设置写入内容
with open(file_name="xx.txt", mode='w') as f:f.writelines(content)#写入文件

此时,文件内容为:

写入内容1
写入内容2
写入内容3

需要注意的是,如果列表content中的元素没有添加换行符,writelines()不会自动添加换行符,因此可能会出现多行内容写入到一行的情况。
因此,如果需要换行,需要在列表中的元素中添加换行符。

1.4 查找内容—file.seek()

tell()函数用于判断文件指针当前所处的位置
使用方式如下:

import file
with open(file_name="xx.txt", mode='r') as f:print(f.tell())f.read(1024)print(f.tell())

输出结果为:

0
1024

seek()函数用于移动文件指针到文件的指定位置。
常见的使用方式如下:

import file
with open(file_name="xx.txt", mode='r') as f:print(f.tell())#输出:0f.read(1024)print(f.tell())#输出:1024f.seek(203)#从文件头开始,移动到第203个字符处print(f.tell())#输出:203

在这里介绍一下seek函数的参数:

seek(offset, whence)
# offset:必需参数,偏移量,相对于某一个基点的字符移动距离,正数表示按照文件流方向向后移动,负数表示逆着文件流方向向前移动
# whence:可选参数,可设置基点位置,0表示文件头(默认情况下),1表示当前位置,2表示文件尾

2. re库的文本处理

当然,在Python中,还有一个专门用于文本处理的库,那就是re库。

我们读取文件内容,肯定不是单纯为了输出或者重新写入,对于文本我们一定有一些查找、定位的需求。

在python中,使用正则表达式能应付大多数情况下的数据处理需要,这就需要用到re库,因此,我会在后续的更新中跟进正则表达式和re库的相关知识,敬请期待。

参考资料

  1. Python3 File(文件) 方法
  2. Python文件基本操作整理
  3. Python 文件处理–详细整理
  4. Unicode,ASCII,UTF-8的区别
  5. Python seek()和tell()函数详解

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

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

相关文章

【云原生•监控】基于Prometheus实现自定义指标弹性伸缩(HPA)

【云原生•监控】基于Prometheus实现自定义指标弹性伸缩(HPA) 什么是弹性伸缩 「Autoscaling即弹性伸缩,是Kubernetes中的一种非常核心的功能,它可以根据给定的指标(例如 CPU 或内存)自动缩放Pod副本,从而可以更好地管…

JS中三种实现懒加载的方法!

1.根据滚动条高度显示图片 可以使用如下代码来实现&#xff1a; HTML部分&#xff1a; <div id"image-container"><img src"https://via.placeholder.com/500x400" alt"placeholder image"> </div>JS部分&#xff1a; win…

关系型数据库MySQL及其优化

写在前面 本文看下MySQL的基础内容以及常见的优化方式。 1&#xff1a;MySQL基础内容 1.1&#xff1a;什么是关系型数据库 以二维的数据格式来存储数据的数据库叫做关系型数据库&#xff0c;其中关系包括一对一&#xff0c;一对多&#xff0c;多对多&#xff0c;都通过二位…

商业智能BI,如何区别联机事务处理(OLTP)和联机分析处理(OLAP)

商业智能(Business Intelligence&#xff0c;简称&#xff1a;BI)&#xff0c;又称商业智慧或商务智能&#xff0c;指用现代数据仓库技术、线上分析处理技术、数据挖掘和数据展现技术进行数据分析以实现商业价值。 商业智能BI - 派可数据数据可视化分析平台 定义为下列软件工具…

CAD随机粗糙度表面插件

插件介绍 CAD随机粗糙度表面插件可用于在AutoCAD软件内生成随机高度分布的表面三维实体模型&#xff0c;适用于科研论文绘图、有限元建模、随机地形模拟等方面的应用。 插件可指定的参数有三维模型的长、宽、高&#xff1b;随机粗糙度表面信息中网格尺寸控制模型生成的精细程…

解决idea编辑application.yml文件或properties文件没有提示问题

注意&#xff1a;这里说的没有提示&#xff0c;是针对application.properties和application.yml文件 解决办法&#xff1a;在idea的插件面板中&#xff0c;禁用或卸载 wl Spring Assistant插件即可解决问题。

springboot 使用zookeeper实现分布式锁

一.添加ZooKeeper依赖&#xff1a;在pom.xml文件中添加ZooKeeper客户端的依赖项。例如&#xff0c;可以使用Apache Curator作为ZooKeeper客户端库&#xff1a; <dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</…

做BI领域的ChatGPT,思迈特升级一站式ABI平台

8月8日&#xff0c;以「指标驱动 智能决策」为主题&#xff0c;2023 Smartbi V11系列新品发布会在广州丽思卡尔顿酒店开幕。 ​ 后疫情时代&#xff0c;BI发展趋势的观察与应对 在发布会上&#xff0c;思迈特CEO吴华夫在开场致辞中表示&#xff0c;当前大环境背景下&#xf…

K8S系列文章之 离线安装自动化工具Ansible

参考 文档 离线安装 Ansible - DevOps - dbaselife 一、Ansible简介 Ansible是一款开源的IT配置管理工具&#xff0c;常被IT界的小伙伴们用于自动化的场景&#xff0c;多用在服务部署、配置管理方面。配置文件采用最常见的yaml格式&#xff0c;学习起来也是比较容易&#xff…

【分布式系统】聊聊高性能设计

每个程序员都应该知道的数字 高性能 对于以上的数字&#xff0c;其实每个程序员都应该了解&#xff0c;因为只有了解这些基本的数字&#xff0c;才能知道对于CPU、内存、磁盘、网络之间数据读写的时间。1000ms 1S。毫秒->微秒->纳秒-秒->分钟 为什么高性能如此重要的…

数据结构刷题训练:用栈实现队列(力扣OJ)

目录 前言 1. 题目&#xff1a;用栈实现队列 2. 思路 3. 分析 3.1 定义 “ 队列 ” 3.2 创建队列 3.3 入队 3.4 队头数据 3.5 出队 3.6 判空和销毁 4.题解 总结 前言 栈和队列是数据结构中的两个重要概念&#xff0c;它们在算法和程序设计中都有着广泛的应用。本文将带你深入了…

物联网是下一个风口吗?

随着科技的持续进步&#xff0c;物联网行业正在迅速兴起&#xff0c;展现出巨大的潜力。那么&#xff0c;物联网行业的未来是什么样的呢&#xff1f; 1. 5G技术的广泛应用和普及 随着5G技术的快速发展和商业化推广&#xff0c;物联网行业将迎来一个巨大的飞跃。5G技术的高速传…

kube-prometheus 使用 blackbox-exporter 进行icmp 监控

安装kube-prometheus 后默认在monitoring namespace中有创建 blackbox-exporter deployment。但默认没有icmp的module配置&#xff0c;无法执行ping探测。因为即使有icmp module&#xff0c;默认配置也是无法执行ping探测的&#xff08;这篇文章要解决的就是这个问题&#xff0…

中科亿海微FIFO使用

引言 FPGA&#xff08;现场可编程门阵列&#xff09;是一种可编程逻辑器件&#xff0c;具有灵活性和可重构性&#xff0c;广泛用于数字电路设计和嵌入式系统开发。在FPGA中&#xff0c;FIFO&#xff08;First-In, First-Out&#xff09;是一种常见的存储器结构&#xff0c;用于…

1001 Battle Over Cities - Hard Version (PAT顶级)

总体思路是用并查集来做。vec记录了目前断掉的路&#xff0c;use记录了使用中的路。将断掉的路按照修复费用从小到大排序。 对每一个城市i失守进行讨论&#xff0c;先根据use将其中两端城市进行union&#xff0c;然后计算一下联通块个数。再按序找两个城市不在同一个联通块中的…

Java常用代码块、工具类、常用框架、mysql常用语句模版汇总

Idea常用插件 Build Generator:生成builder模式的代码MybatisX:mapper.xml文件和dao之间关联、映射LombokMaven Helper:分析maven冲突等Json parserJava后台常用框架 springbootspringmvcmybatis -plusmysqlmavenjunitjacksonguavaapache commons utilsnettyswaggerjoda-tim…

【Nginx】Nginx的重定向——location

location 匹配URI location 匹配的规则和优先级&#xff1b;***重点 nginx常用的变量&#xff1b;要求掌握 rewrite 重定向&#xff1b;掌握/理解 location匹配&#xff1a;*** 正则表达式&#xff1a;匹配的是文件内容 常见的正则表达式&#xff1a…

读《Flask Web开发实战》(狼书)笔记 | 第1、2章

前言 2023-8-11 以前对网站开发萌生了想法&#xff0c;又有些急于求成&#xff0c;在B站照着视频敲了一个基于flask的博客系统。但对于程序的代码难免有些囫囵吞枣&#xff0c;存在许多模糊或不太理解的地方&#xff0c;只会照葫芦画瓢。 而当自己想开发一个什么网站的时&…

【云原生】Kubernetes 概述

Kubernetes 概述 1.Kubernetes 简介 Kubernetes 是一个可移植的、可扩展的、用于管理容器化工作负载和服务的开源平台&#xff0c;它简化&#xff08;促进&#xff09;了声明式配置和自动化。它有一个庞大的、快速增长的生态系统。Kubernetes 的服务、支持和工具随处可见。 K…

消息队列kafka及zookeeper机制

一、zookeeper1.1 zookeeper简介1.2 zookeeper工作机制1.3 Zookeeper特点1.4 Zookeeper 数据结构1.5 Zookeeper 应用场景1.5.1 统一命名服务1.5.2 统一配置管理1.5.3 统一集群管理1.5.4 服务器动态上下线1.5.5 软负载均衡 1.6 Zookeeper 选举机制1.6.1 第一次启动选举机制1.6.2…