赞
赏
在 Python 中,读取文件内容可以使用 open 函数打开文件,打开文件之后,再次使用 read 函数、 readline 函数或者使用 readlines 函数来读取读取文件。
除了以上三种方法,Python 提供的内置的 fileinput 模块,提供了更方便的按行读取文件与获取文件信息的方法。
fileinput.input([files[, inplace[, backup[, bufsize[, mode[, openhook]]]]]])
参数 | 描述 |
---|---|
files | 文件的路径 列表,如果要读取多个文件,则将多个文件组成列表的形式进行 参数 传入。 |
inplace | 是否返回输出结果到原文件中,默认为 0 不返回,设置为 1 时返回。 |
backup | 备份文件的扩展名。 |
bufsize | 缓冲区大小,Python 2.7.12 版本该参数不再使用。 |
mode | 读写模式,只能是读、写、读写、二进制四种模式,默认是读模式。 |
openhook | 该参数必须是带两个参数(文件名和模式)的 函数。 |
函数 | 说明 |
---|---|
fileinput.filename() | 返回正在读取的文件的文件名 |
fileinput.fileno() | 返回当前文件的文件描述符(file descriptor),该文件描述符是一个整数 |
fileinput.lineno() | 返回当前读取的行号 |
fileinput.filelineno() | 返回当前读取的行在其文件中的行号 |
fileinput.isfirstline() | 返回当前读取的行在其文件中是否为第一行 |
fileinput.isstdin() | 返回最后一行是否从 sys.stdin 读取。程序可以使用“-”代表从 sys.stdin 读取 |
fileinput.nextfile() | 关闭当前文件,开始读取下一个文件 |
fileinput.close() | 关闭 FileInput 对象 |
使用 fileinput 读取文件
import fileinput
print("嗨客网(www.haicoder.net)")
with fileinput.input("C:/haicoder.txt") as f:
for line in f:
print("line=", line)
程序运行后,控制台输出如下:
我们使用 fileinput 模块读取文件 “C:/haicoder.txt”,并打印读取到的每一行内容。
使用 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())
程序运行后,控制台输出如下:
我们在使用 fileinput 模块读取文件内容时,还可以使用其提供的全局函数,来获取读取文件的详细信息。
我们看到,我们获取了文件是否是第一行,文件的 fileno 以及文件的行号 lineno 等信息,同时,等文件读取完毕之后,文件的 fileno 就变成了 -1。
使用 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="")
程序运行后,控制台输出如下:
我们在使用 fileinput.input 读取文件时,一次传入了多个文件名,此时,fileinput.input 会一次将我们传入的所有的文件读取出来,并且每次读取我们都获取了当前正在读取的文件名,文件的行号,以及内容。
Python 提供的内置的 fileinput 模块,提供了更方便的按行读取文件与获取文件信息的方法。 Python fileinput 语法:
fileinput.input([files[, inplace[, backup[, bufsize[, mode[, openhook]]]]]])