文章目录(可自行点到想阅读的地方哦)
前言
哈喽大家好呀,这里是蛋挞的第一篇文章 🤔
不知道跟你们说啥,那就直接来给你们分享一个关于python中读取文件的小技巧(小方法)吧
这这这这可是可以堪称天花板级别的读取方法!
今天我们来了解一下 fileinput 。
说到fileinput,可能90%的码农表示没用过,甚至没有听说过。
这不奇怪,因为在python界,既然open可以走天下,何必要fileinput呢?
但是,今天我还是要介绍fileinput这个方法,因为太奈斯了。
不止是香。是真香!
哼哼,不信吗?不看看怎么知道它香不香!
正文
1.方法介绍
基本用法
先来看一下fileinput的基本功能:
- fileinput.filename():返回当前被读取的文件名。 —>在第一行被读取之前,返回 None。
- fileinput.fileno():返回以整数表示的当前文件“文件描述符”。 —>当未打开文件时(处在第一行和文件之间),返回 -1。
- fileinput.lineno():返回已被读取的累计行号。 —>在第一行被读取之前,返回0。在最后一个文件的最后一行被读取之后,返回该行的行号。
- fileinput.filelineno():返回当前文件中的行号。 —>在第一行被读取之前,返回 0。—>在最后一个文件的最后一行被读取之后,返回此文件中该行的行号。
进阶用法
- fileinput.isfirstline():如果刚读取的行是其所在文件的第一行则返回 True,否则返回 False。
- fileinput.isstdin():如果最后读取的行来自 sys.stdin 则返回 True,否则返回 False。
- fileinput.nextfile():关闭当前文件以使下次迭代将从下一个文件(如果存在)读取第一行;不是从该文件读取的行将不会被计入累计行数。直到下一个文件的第一行被读取之后文件名才会改变。
—>在第一行被读取之前,此函数将不会生效;它不能被用来跳过第一个文件。 —>在最后一个文件的最后一行被读取之后,此函数将不再生效。 - fileinput.close():关闭序列。
2.默认读取
代码示例
import fileinput
'当 Python 脚本没有传入任何参数时,fileinput 默认会以 stdin 作为输入源'
for line in fileinput.input():
print(f'{
line}')
运行结果
你输入的内容,程序都会读取并再输出。
俗称:复读机
3.处理一个文件
代码示例
import fileinput
'files 输入打开文件的名称即可'
with fileinput.input(files=('output.txt',)) as file:
for line in file:
print(f'{
fileinput.filename()} 第{
fileinput.lineno()}行:{
line}',end='')
运行结果
解析:
- fileinput 有且仅有这两种读取模式:‘r’,‘rb’;
- fileinput.input() 默认使用 mode=‘r’ 的模式读取文件,如果你的文件是二进制的,可以使用mode=‘rb’ 模式。
4.处理批量文件
多文件序号连续排序
调用方法
- fileinput.lineno()方法
代码示例
import fileinput
'files 输入打开文件的名称即可'
with fileinput.input(files=('output.txt','input.txt'