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

【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()函数详解

相关文章:

【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等类型的…...

SpringBoot项目(验证码整合)——springboot整合email springboot整合阿里云短信服务

目录 引出springboot整合email配置邮箱导入依赖application.yml配置email业务类测试类 springboot整合阿里云短信服务申请阿里云短信服务测试短信服务获取阿里云的accessKeyspringboot整合阿里云短信导包工具类 总结 引出 1.springboot整合email,qq邮箱,…...

缓存穿透,击穿,雪崩之间的区别与联系

1、缓存数据基本流程 通常来说,我们是从数据库将数据查询出来之后,如果数据不为空,则将数据存储在缓存中,下次查询时就直接从缓存查询了,只有查询不到才会从数据库查询。 2、缓存穿透 核心在穿透两个字,穿透了,就说明在查询数据时没有遇到阻碍,直接就查询到了数据库。…...

Vue项目npm run dev 启动报错TypeError: Cannot read property ‘upgrade‘ of undefined

vue项目启动报错 TypeError: Cannot read property upgrade of undefined 由于我的vue.config.js文件 里面的代理target为空导致的 修改: 结果就可以正常运行了 参考原文: vue项目运行时报Cannot read property ‘upgrade’ of undefined错误_cannot r…...

dji uav建图导航系列(二)导航

文章目录 1、导航节点launch文件1.1、节点参数1.2、模拟器节点1.3、无人机雷达-底盘节点1.4、地图服务器节点1.5、AMCL节点1.6、move_base节点1.7、rviz可视化节点2、导航测试2.1、导航实测2.2、动态参数配置 rqt_reconfigure1、导航节点launch文件 导航节点启动文件 uav_navi…...

24.Netty源码之合理管理堆内存

highlight: arduino-light 合理管理 Netty 堆外内存 内存使用目标 •内存占用少(空间) •应用速度快(时间) 即多快好省 对 Java 而言:减少 Full GC 的 STW(Stop the world)时间 内存使用技巧 • 减少对象本身大小 md 例 1:用基本类型就不要用包装类。 例…...

如何自学(黑客)网络安全

前言: 想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客! 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“…...

【vue】vue基础知识

1、插值表达式&属性绑定 <!--template展示给用户&#xff0c;相当于MVVM模式中的V--> <template><div class"first_div">//插值表达式<p>{{ message }}</p>//这里的参数是从父组件的template里传过来的<p>{{data_1}}</p…...

第一百一十一回 如何实现屏幕适配

文章目录 概念介绍实现方法示例代码 我们在上一章回中介绍了动画相关的内容&#xff0c;本章回中将介绍 如何适配屏幕.闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 我们平常使用的手机屏幕大小不同&#xff0c;App运行在这些大小不同的屏幕上时效果却相同&…...

免费实用的日记应用:Day One for Mac中文版

Day One for Mac是一款运行在Mac平台上的日记软件&#xff0c;你可以使用Day One for mac通过快速菜单栏条目、提醒系统和鼓舞人心的信息来编写更多内容&#xff0c;day one mac版还支持Dropbox同步功能&#xff0c;想要day one mac中文免费版的朋友赶紧来试试吧&#xff01; …...

HCIP的BGP基础实验

一、实验需求 除R5的5.5.5.0环回外&#xff0c;其他所有的环回均可互相一访问。 二、实验步骤 1.配置ip 2.建立邻居关系 2.1 R1和R2建立直连的EBGP邻居关系 [r1]bgp 1 [r1-bgp]router-id 1.1.1.1 [r1-bgp]peer 12.1.1.2 as-number 2 要建的话双方都要建下面配置R2 [r2]bgp…...

centos7编译安装升级python3.11

编译安装python3.11 准备步骤解压编译替换升级 准备步骤 yum -y install gcc zlib zlib-devel libffi libffi-devel bzip2-devel yum -y install openssl-devel openssl11 openssl11-devel yum -y install readline-devel解压编译 wget https://www.python.org/ftp/python/3.…...

win10安装mysql和c++读取调用举例

一、下载mysql8.rar解压到C盘(也可以解压到其他位置) 在系统环境变量添加JAVA_HOMEC:\myslq8&#xff0c;并在path中添加%JAVA_HOME%\bin; 二、以管理员身份进入命令窗口 三、修改配置文件指定安装路径和数据库的存放路径 四、键入如下命令初始化并启动mysql服务,然后修改登录…...

计算机竞赛 opencv python 深度学习垃圾图像分类系统

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; opencv python 深度学习垃圾分类系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 这是一个较为新颖的竞…...

通讯协议037——全网独有的OPC HDA知识一之聚合(六)实际时间最小值

本文简单介绍OPC HDA规范的基本概念&#xff0c;更多通信资源请登录网信智汇(wangxinzhihui.com)。 本节旨在详细说明HDA聚合的要求和性能。其目的是使HDA聚合标准化&#xff0c;以便HDA客户端能够可靠地预测聚合计算的结果并理解其含义。如果用户需要聚合中的自定义功能&…...

【Freertos基础入门】freertos任务的优先级

文章目录 前言一、任务优先级1.Tick2.修改任务优先级 总结 前言 本系列基于stm32系列单片机来使用freerots 任务管理是实时操作系统&#xff08;RTOS&#xff09;的核心功能之一&#xff0c;它允许开发者以并发的方式组织和管理多个任务。FreeRTOS 是一个流行的开源RTOS&…...

【报错】ModuleNotFoundError: No module named ‘websocket‘

1 报错 ModuleNotFoundError: No module named websocket 2 解决方法 pip install websocket 1 报错 AttributeError: module websocket has no attribute enableTrace 2 分析 一般是由于websocket的依赖包没有安装造成的。websocket.enableTrace()方法是在websocket-cli…...

[Leetcode] [Tutorial] 多维动态规划

文章目录 62. 不同路径Solution 62. 不同路径 一个机器人位于一个 m ∗ * ∗ n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。 问总共有多少条不同的路径&#xff1f; 示例…...

C语言 二级指针和多级指针

什么是二级指针&#xff1f; 假设&#xff1a; int a 10;int * p &a;如上&#xff0c;p是指针变量&#xff0c;寄存的是a的地址&#xff0c;指向的是元素a 那么&#xff0c;指针变量p有地址吗&#xff1f;指针变量p的指针指向的是&#xff1f; int * * pp &p; …...

新机器到了要做的事情

文章目录 新机器到了要做的事情背景检查机器安装系统装系统步骤 总结 新机器到了要做的事情 背景 运维 一台机器到了&#xff0c;去看看机器情况&#xff0c;小编之前是开发呀&#xff0c;由于种种原因&#xff0c;阴差阳错的做了运维&#xff0c;本以为是应用运维&#xff0c…...

别再死记硬背了!用‘浏览器缓存淘汰’和‘Redis内存回收’两个真实案例,彻底搞懂LRU算法

从浏览器缓存到Redis内存回收&#xff1a;LRU算法的工程实践与深度解析 当你在浏览器中反复刷新同一个网页时&#xff0c;是否好奇为什么第二次加载速度明显快于第一次&#xff1f;当你在电商平台浏览商品时&#xff0c;为什么推荐系统能如此快速地给出个性化建议&#xff1f;这…...

mscoree.dll文件损坏了怎么办? 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…...

eBPF:Linux 内核的“超能力“,云原生时代的核心技术底座

eBPF&#xff1a;Linux 内核的"超能力"&#xff0c;云原生时代的核心技术底座在 Kubernetes 集群中排查一次跨服务调用超时&#xff0c;传统方案需要修改代码、重启服务、等待日志采集。而基于 eBPF 的方案&#xff0c;只需在宿主机内核加载一段程序&#xff0c;即可…...

26年新高考英语大纲词汇表3500个电子版PDF(含正序版、乱序版和默写版)

2026年高中英语大纲词汇表说明 2026年高中英语大纲词汇表说明 类别内容描述适用场景词汇版本提供完整版高中英语大纲词汇3500个&#xff0c;分为正序版、乱序版及默写版三种形式。满足不同学习阶段的需求。正序版按字母顺序排列&#xff0c;便于系统学习与查阅。基础词汇梳理…...

Agent调用工具失败?5个常见Tool Registration错误及修复方案(2026 全新深度排查指南 全程避坑,亲测有效)

一、为什么 Agent 工具注册如此容易出错&#xff1f; 1.1 LangChain Agent 的工具调用机制 Agent 通过 工具注册表&#xff08;Tool Registry&#xff09; 管理可用工具&#xff1a; #mermaid-svg-eZJSPSLtCp2kav5W{font-family:"trebuchet ms",verdana,arial,sans…...

DownKyi终极指南:3步掌握B站视频高效下载与管理

DownKyi终极指南&#xff1a;3步掌握B站视频高效下载与管理 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09;…...

SystemVerilog随机化避坑指南:从`rand`/`randc`到`std::randomize()`的实战踩坑记录

SystemVerilog随机化避坑指南&#xff1a;从rand/randc到std::randomize()的实战踩坑记录 在芯片验证领域&#xff0c;SystemVerilog的随机化功能是构建高效验证环境的核心工具。但许多工程师在从理论转向实践时&#xff0c;往往会遇到各种"反直觉"的行为——约束条件…...

TranslucentTB开机自启动终极指南:彻底告别手动启动的烦恼

TranslucentTB开机自启动终极指南&#xff1a;彻底告别手动启动的烦恼 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 还在为每次开机都要…...

避坑指南:北航MEM复试被刷后,我总结的3个报名细节和2个备考决策陷阱

北航MEM复试避坑手册&#xff1a;从报名到考场的5个致命细节 站在北航MEM复试被刷的十字路口回望&#xff0c;那些藏在报名表角落的选项、备考时犹豫的三秒钟决策、考场上被忽略的涂卡时机&#xff0c;每一个细节都像蝴蝶效应般最终影响了结果。这不是又一篇成功经验分享&#…...

告别cd命令:如何让Windows右键菜单同时拥有CMD和PowerShell选项

双剑合璧&#xff1a;Windows右键菜单同时集成CMD与PowerShell的终极方案 每次在资源管理器里按住Shift键右键点击文件夹时&#xff0c;你是否也纠结过该选择命令提示符还是PowerShell&#xff1f;作为Windows系统管理中最常用的两个命令行工具&#xff0c;它们各有独特的优势场…...