Python 标准库 fileinput与文件迭代器
作者:wohu1104 发布时间:2023-10-31 22:36:50
标签:Python,fileinput,文件,迭代器
1. 使用 fileinput 进行迭代
fileinput
模块可以对一个或多个文件中的内容进行迭代、遍历等操作。该模块的 input()
函数有点类似文件 readlines
函数,但区别明显:
readlines
是一次性读取文件中的全部内容,如果文件较大的话,会占用大量内存;input
返回的则是一个迭代对象,结合for
循环使用,典型用法如下:
import fileinput
for line in fileinput.input(filename):
process(line)
实例:
import fileinput
for line in fileinput.input("D:/Users/data.txt"):
print(line)
注意:input
函数有多个参数:分别设置读取文件路径、读写模式、编码方式、缓冲区大小、备份文件扩展名等。
此外,fileinput
模块还有很多常用的函数,这里介绍几个最常用的。
函数名 说明:
fileinput.input()
返回能够用于for
循环遍历的对象fileinput.filename()
返回当前文件的名称fileinput.lineno()
返回当前已经读取的行的数量(或者序号)fileinput.filelineno()
回当前读取的行的行号fileinput.isfirstline()
检查当前行是否是文件的第一行fileinput.isstdin()
判断最后一行是否从stdin
中读取fileinput.close()
关闭队列
2. 文件迭代器
#打开文件,一次写入多行内容
f = open("D:/Users/data.txt",'w')
content = ['append information1\n','append information2']
f.writelines(content)
f.close()
#打开文件,通过文件迭代器遍历文件
f = open("D:/Users/data.txt",'r')
for line in f:
print('content:',line)
# 或者 将读取内容转化为字符串列表 效果类似 readlines
lines = list(f)
print(lines)
#关闭文件
f.close()
执行结果(省略空行):
content: append information1
content: append information2
3. 字典的 setdefault 方法使用举例
如果仅当字典中不存在某个键值对时,才插入到字典中;如果存在,不必插入(也就不会修改键值对)。
这种场景,使用字典自带方法 setdefault
:
In [35]: d = {'a':1,'b':2}
In [36]: r = d.setdefault('c',3) # r: 3
In [37]: r
Out[37]: 3
In [38]: d
Out[38]: {'a': 1, 'b': 2, 'c': 3}
In [39]: r = d.setdefault('c',33) # r:3,已经存在'c':3的键值对,所以setdefault时d无改变
In [40]: r
Out[40]: 3
In [41]: d
Out[41]: {'a': 1, 'b': 2, 'c': 3}
来源:https://blog.csdn.net/wohu1104/article/details/125055526


猜你喜欢
- 在使用Python绘制图表前,我们需要先安装两个库文件numpy和matplotlib。Numpy是Python开源的数值计算扩展,可用来存
- 请求的ajax路径传递的参数(data)会到action中被一个同样名字的变量(附带set get方法)接收,返回的data是一个JQuer
- Swin TransformerSwin Transformer是一种用于图像处理的深度学习模型,它可以用于各种计算机视觉任务,如图像分类、
- Python矩阵的基本用法mat()函数将目标数据的类型转化成矩阵(matrix)1,mat()函数和array()函数的区别Numpy函数
- 本文实例讲述了python 协程 gevent原理与用法。分享给大家供大家参考,具体如下:geventgreenlet已经实现了协程,但是这
- win10系统本地安装MySQL8.0.20,亲测可用,也是参考了其他大神的操作1. 下载Mysql ,官网下载地址:MySQL官网:链接直
- MySQL是一个开源的关系型数据库管理系统,支持多种操作语言,其中最基础、最常用的命令之一就是SELECT语句。在本篇文章中,这里将详细介绍
- 用for循环和海龟绘图实现漂亮的螺旋线A.课程内容本节课通过绘制复杂的螺旋线来深入学习for循环和range()函数的用法。深入了解循环的程
- 模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处理。模块化是一种处理复杂系统分解为代码结
- Java一直标榜一句老话叫“编写一次,到处运行(Write Once,Run Anywhere)”,CSS也差一点点做到了。但就是为了差的一
- 1、灵活运用样式 熟悉网页设计的网友就知道,调用Style的方法很多,我们可以单击鼠标右键选择Custon Style来调用Style标准,
- 问题你有50枚金币,需要分配给以下几个人:Matthew,Sarah,Augustus,Heidi,Emilie,Peter,Giana,A
- 最近做了一个小项目,里面有一个需求需要添加一个动态进度条,进度条的样式就类似于水波来回起伏的那种形状,下面就是最初的展示效果(有一点区别,这
- 目录系列教程一、MySQL简介二、MySQL的发展历史三、MariaDB的基本使用1、基本安装与配置2、客户端命令:mysql3、其他客户端
- 本篇文章主要是由于计划使用django写一个计划任务出来,可以定时的轮换值班人员名称或者定时执行脚本等功能,百度无数坑之后,终于可以凑合把这
- 本文实例讲述了Python学习笔记之列表推导式。分享给大家供大家参考,具体如下:列表推导式列表推导式可以快速简练地创建列表之前的复杂写法:c
- 前言:目前在研究易信公众号,想给公众号增加一个获取个人交通违章的查询菜单,通过点击返回查询数据。以下是实施过程。一、首先,用火狐浏览器打开X
- 话不多说,直接上代码import copyimport cv2import numpy as npWIN_NAME = 'draw_
- 给定一篇英语文章,要求统计出所有单词的个数,并按一定次序输出。思路是利用go语言的map类型,以每个单词作为关键字存储数量信息,代码实现如下
- 一 介绍 在笔者支持业务过程中,经常遇到开发咨询replace into 的使用场景以及注意事项,这里做个总结。从功能原理,性能