Python fileinput使用

Python fileinput使用教程

Python 中,读取文件内容可以使用 open 函数打开文件,打开文件之后,再次使用 read 函数、 readline 函数或者使用 readlines 函数来读取读取文件。

除了以上三种方法,Python 提供的内置的 fileinput 模块,提供了更方便的按行读取文件与获取文件信息的方法。

Python fileinput详解

语法

fileinput.input([files[, inplace[, backup[, bufsize[, mode[, openhook]]]]]])

参数

参数 描述
files 文件的路径 列表,如果要读取多个文件,则将多个文件组成列表的形式进行 参数 传入。
inplace 是否返回输出结果到原文件中,默认为 0 不返回,设置为 1 时返回。
backup 备份文件的扩展名。
bufsize 缓冲区大小,Python 2.7.12 版本该参数不再使用。
mode 读写模式,只能是读、写、读写、二进制四种模式,默认是读模式。
openhook 该参数必须是带两个参数(文件名和模式)的 函数

Python fileinput获取文件信息

函数 说明
fileinput.filename() 返回正在读取的文件的文件名
fileinput.fileno() 返回当前文件的文件描述符(file descriptor),该文件描述符是一个整数
fileinput.lineno() 返回当前读取的行号
fileinput.filelineno() 返回当前读取的行在其文件中的行号
fileinput.isfirstline() 返回当前读取的行在其文件中是否为第一行
fileinput.isstdin() 返回最后一行是否从 sys.stdin 读取。程序可以使用“-”代表从 sys.stdin 读取
fileinput.nextfile() 关闭当前文件,开始读取下一个文件
fileinput.close() 关闭 FileInput 对象

案例

使用fileinput读取文件

使用 fileinput 读取文件

import fileinput print("嗨客网(www.haicoder.net)") with fileinput.input("C:/haicoder.txt") as f: for line in f: print("line=", line)

程序运行后,控制台输出如下:

52_Python fileinput读文件.png

我们使用 fileinput 模块读取文件 “C:/haicoder.txt”,并打印读取到的每一行内容。

使用fileinput获取文件信息

使用 fileinput 获取文件信息

import fileinput print("嗨客网(www.haicoder.net)") with fileinput.input("C:/haicoder.txt") as f: for line in f: print("line=", line) print("In with IsFirstNo =", f.isfirstline()) print("In with FileNo =", f.fileno()) print("In with LineNo =", f.lineno()) print("FileNo =", f.fileno()) print("LineNo =", f.lineno())

程序运行后,控制台输出如下:

53_Python fileinput读文件.png

我们在使用 fileinput 模块读取文件内容时,还可以使用其提供的全局函数,来获取读取文件的详细信息。

我们看到,我们获取了文件是否是第一行,文件的 fileno 以及文件的行号 lineno 等信息,同时,等文件读取完毕之后,文件的 fileno 就变成了 -1。

使用fileinput读取多个文件

使用 fileinput 读取多个文件

import fileinput print("嗨客网(www.haicoder.net)") with fileinput.input(["C:/haicoder.txt", "C:/haicoder1.txt"]) as f: for line in f: print("fileName =", f.filename(), "lineno =", f.lineno(), "content =", line, end="")

程序运行后,控制台输出如下:

54_Python fileinput读文件.png

我们在使用 fileinput.input 读取文件时,一次传入了多个文件名,此时,fileinput.input 会一次将我们传入的所有的文件读取出来,并且每次读取我们都获取了当前正在读取的文件名,文件的行号,以及内容。

Python fileinput读取文件总结

Python 提供的内置的 fileinput 模块,提供了更方便的按行读取文件与获取文件信息的方法。 Python fileinput 语法:

fileinput.input([files[, inplace[, backup[, bufsize[, mode[, openhook]]]]]])