【python技巧】文本文件的读写操作
2023-08-11 21:36:16 来源:博客园
【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 filef=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_name
、mode
、encoding
。
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 filewith open(file_name="xx.txt", mode="r") as f: content=f.read()#从头到尾进行文件读取print(content)#打印整个文件内容
输入效果类似于:
第一行内容;第二行内容,第三行内容第四行内容……
read()
还可以传入数字,形成read(n)
,表示读取n个字符。
- 按行读取按行读取有两个函数:
readline()
和readlines()
。其中,readline()
是每次读取一行文件内容,readlines()
是将文件内容按行读取到一个列表中。readline()
的使用方法如下:
import filecontent_line="读取内容:\n"#设置起始内容with open(file_name="xx.txt", mode="r") as f: while content_line:##当读取内容不为空的时候 print(content_line)#打印整个文件内容 content_line=f.readline()#逐行读取文件内容
输入效果类似于:
第一行内容;第二行内容,第三行内容第四行内容……
readlines()
的使用方法如下:
import filewith open(file_name="xx.txt", mode="r") as f: content=f.readlines()#读取全部文件内容,按行分割,形成列表print(content)#打印整个文件内容,是一个列表格式
输入效果类似于:
[第一行内容;第二行内容,第三行内容第四行内容……]
1.3 写入文件---file.write()
文件写入的方式有两种:一种是一次性写入所有内容,一种是按行写入。
- 一次性写入所有内容
import filecontent="待写入内容,可以很长"#设置写入内容with open(file_name="xx.txt", mode="w") as f: f.write(content)#写入文件,这是使用的是覆盖写入
- 按行写入按行写入函数为
writelines()
,将列表中的内容按行写入文件。writelines()
的使用方法如下:
import filecontent=["写入内容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 filewith open(file_name="xx.txt", mode="r") as f: print(f.tell()) f.read(1024) print(f.tell())
输出结果为:
01024
而seek()
函数用于移动文件指针到文件的指定位置。常见的使用方式如下:
import filewith open(file_name="xx.txt", mode="r") as f: print(f.tell())#输出:0 f.read(1024) print(f.tell())#输出:1024 f.seek(203)#从文件头开始,移动到第203个字符处 print(f.tell())#输出:203
在这里介绍一下seek函数的参数:
seek(offset, whence)# offset:必需参数,偏移量,相对于某一个基点的字符移动距离,正数表示按照文件流方向向后移动,负数表示逆着文件流方向向前移动# whence:可选参数,可设置基点位置,0表示文件头(默认情况下),1表示当前位置,2表示文件尾
2. re库的文本处理
当然,在Python中,还有一个专门用于文本处理的库,那就是re
库。
我们读取文件内容,肯定不是单纯为了输出或者重新写入,对于文本我们一定有一些查找、定位的需求。
在python中,使用正则表达式能应付大多数情况下的数据处理需要,这就需要用到re
库,因此,我会在后续的更新中跟进正则表达式和re
库的相关知识,敬请期待。
参考资料
- Python3 File(文件) 方法
- Python文件基本操作整理
- Python 文件处理--详细整理
- Unicode,ASCII,UTF-8的区别
- Python seek()和tell()函数详解
相关阅读
- (2023-08-11)【python技巧】文本文件的读写操作
- (2023-08-11)健康的体重是多少?怎样维持?一文读懂健康体重核心信息
- (2023-08-11)四川:局地强降雨 4.9万余人避险转移
- (2023-08-11)上市公司元宇宙路演中心正式启动
- (2023-08-11)2023沈阳狗证续费一年多少钱?
- (2023-08-11)8月11日:割肉红塔证券和首创证券,追高昊帆生物,亏14.4%
热点推荐
- (2023-08-11)【python技巧】文本文件的读写操作
- (2023-08-11)云涌科技: 云涌科技独立董事关于第三届董事会第十四次会议相关议案的独立意见
- (2023-08-11)宗馥莉接棒后,娃哈哈业绩回暖,宗庆后豪掷千万给员工发奖金
- (2023-08-11)非法捕捞渔获物13千克,赔偿10万尾鱼苗增殖放流
- (2023-08-11)健康的体重是多少?怎样维持?一文读懂健康体重核心信息
- (2023-08-11)彩讯股份(300634):智能数字化专家 积极拥抱AI时代
最近更新
- (2023-08-11)【python技巧】文本文件的读写操作
- (2023-08-11)云涌科技: 云涌科技独立董事关于第三届董事会第十四次会议相关议案的独立意见
- (2023-08-11)宗馥莉接棒后,娃哈哈业绩回暖,宗庆后豪掷千万给员工发奖金
- (2023-08-11)非法捕捞渔获物13千克,赔偿10万尾鱼苗增殖放流
- (2023-08-11)健康的体重是多少?怎样维持?一文读懂健康体重核心信息
- (2023-08-11)彩讯股份(300634):智能数字化专家 积极拥抱AI时代
- (2023-08-11)青岛中程2023年半年报:净利润约
- (2023-08-11)个人支付信息保护新规:收单机构不应将资金结算、风险监测等工作外包
- (2023-08-11)各项指标快速增长 上半年光伏行业交出亮丽成绩单
- (2023-08-11)中国交通通信信息中心党委委员、副主任林榕:依靠战略、价值、数据、技术及创新能力 驱动交通运输行业数字化转型
- (2023-08-11)四川:局地强降雨 4.9万余人避险转移
- (2023-08-11)国际足联的总部在哪里(国际足联总部)
- (2023-08-11)党建引领“聚势赋能” 幸福生活“圈”起来
- (2023-08-11)汤旺县种植五味子让村民鼓起“钱袋子”
- (2023-08-11)南京聚隆:拟2000万元-4000万元回购公司股份,回购价不超25元/股
- (2023-08-11)上市公司元宇宙路演中心正式启动
- (2023-08-11)北京三部门:帮扶市场主体支持灾后重建
- (2023-08-11)[快讯]金田股份:金田股份使用募集资金置换预先投入募投项目和已支付发行费用的自筹资金
- (2023-08-11)播下协商民主“种子” 铺就两岸融合发展新路
- (2023-08-11)人民币对英镑汇率(2023年7月3日)
- (2023-08-11)人民币兑英镑汇率(2023年8月11日)
- (2023-08-11)24年初降息伦敦银探高
- (2023-08-11)美元兑日元延续上行趋势,接近上方阻力短期谨慎看涨
- (2023-08-11)油价上涨可能引发新一轮通胀,威胁美国经济软着陆
- (2023-08-11)支付宝回应“办45张证明才解绑”:因用户绑定银行卡非本人办理
- (2023-08-11)新增78个出境团队游目的地 多家旅行社上架产品 预订火热
- (2023-08-11)2023沈阳狗证续费一年多少钱?
- (2023-08-11)拉卡拉:收钱吧是公司的重要的渠道合作伙伴
- (2023-08-11)77skins开箱在哪 十款即开即取csgo饰品开网站一览
- (2023-08-11)车过丹巴,成都游客点赞:“景美人更美!”