python中的文件读取库fileinput

python中的文件读取库fileinput

简介

fileinput是open方法的高级封装

  • input()函数类似于open的readlines(),区别在于前者是个迭代对象,一次只读一行,后者是一次性读取所有行。
常用函数
fileinput.input()       # 进行读取文件对象的初始化,返回能够用于for循环遍历的对象
# return FileInput(files, inplace, backup, mode=mode, openhook=openhook)
fileinput.filename()    # 返回当前文件的名称
# return fileInput.filename()
fileinput.lineno()      # 返回当前已经读取的行的数量(或者序号)
# return fileInput.lineno()
fileinput.filelineno()  # 返回当前读取的行的行号
# return fileInput.filelineno()
fileinput.isfirstline() # 检查当前行是否是文件的第一行
# return fileInput.isfirstline()
fileinput.isstdin()     # 判断最后一行是否从stdin中读取
# return fileInput.isstdin()
fileinput.close()       # 关闭队列,也是关闭文件

fileinput.nextfile()  # 关闭当前文件以使下次迭代将从下一个文件(如果存在)读取第一行;不是从该文件读取的行将不会被计入累计行数。直到下一个文件的第一行被读取之后文件名才会改变。
# —>在第一行被读取之前,此函数将不会生效;它不能被用来跳过第一个文件。
# —>在最后一个文件的最后一行被读取之后,此函数将不再生效。

# 过程中可以使用from glob import glob 方法如(file = glob("*.txt"))
函数参数

打开文件

fileinput.input(files=None, inplace=False, backup="", bufsize=0, *, mode="r", openhook=None)

files:默认是stdin方式 ,传入要打开的文件,可以传入一个文件列表,打开多个文件
inplace:是否将标准输出的结果写回文件,默认不取代
backup:备份文件的扩展名,只指定扩展名,如.bak。如果该文件的备份文件已存在,则会自动覆盖。
bufsize:缓冲区大小,默认为0,如果文件很大,可以修改此参数,一般默认即可
mode: 读写模式,默认为只读
openhook:钩子函数, 该钩子用于控制打开的所有文件,比如说编码方式等,返回一个文件对象

钩子函数

openhook 的参数

  • 如果没有传入任何勾子,fileinput 默认使用的是 open 函数
内置函数

fileinput.hook_compressed(filename, mode)

使用 gzip 和 bz2 模块透明地打开 gzip 和 bzip2 压缩的文件(通过扩展名 ‘.gz’ 和 ‘.bz2’ 来识别);
如果文件扩展名不是 ‘.gz’ 或 ‘.bz2’,文件会以正常方式打开(即使用 open() 并且不带任何解压操作);
使用示例:

fi = fileinput.FileInput(openhook=fileinput.hook_compressed)

fileinput.hook_encoded(encoding, errors=None)

返回一个通过 open() 打开每个文件的钩子,使用给定的 encoding 和 errors 来读取文件。
使用示例:

fi = fileinput.FileInput(openhook=fileinput.hook_encoded(“utf-8, “surrogateescape”))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

༒࿈十三༙྇࿈༒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值