Python中的FileInput()函数用法和示例解析
FileInput()函数是Python中用于读取和操作文件的内置函数之一。它可以接收文件名作为参数,并创建一个可迭代的文件对象。通过迭代此文件对象,我们可以逐行读取文件内容,并进行相关的操作。
FileInput()函数的常用用法如下:
import fileinput
with fileinput.FileInput(filename) as f:
for line in f:
# 对每一行进行操作
这里的filename代表文件的名称或路径。使用这个函数,我们可以打开并读取该文件,并逐行对其进行操作。
接下来,我们来看一个示例。假设我们有一个文本文件example.txt,内容如下:
Hello, world! Welcome to Python!
我们可以通过FileInput()函数,逐行读取并输出该文件的内容:
import fileinput
filename = "example.txt"
with fileinput.FileInput(filename) as f:
for line in f:
print(line, end="")
运行以上代码,我们会得到如下的输出:
Hello, world! Welcome to Python!
上述代码中,我们首先导入了fileinput模块,然后指定了要操作的文件名称为example.txt。然后,我们使用with语句打开该文件,并将它赋值给变量f。接着,我们通过for循环逐行读取文件内容,并使用print函数输出每一行。注意,在print函数中,我们使用end=""参数来指定输出行结束时不换行。这是因为在读取文件时,每一行末尾已经有了一个换行符,我们不希望输出两个换行符。
除了仅仅打印文件内容外,我们还可以对其进行其他的操作。比如,我们可以在读取文件的同时,将文件内容的每一行添加到一个列表中:
import fileinput
filename = "example.txt"
lines = []
with fileinput.FileInput(filename) as f:
for line in f:
lines.append(line.strip())
print(lines)
运行以上代码,我们会得到如下的输出:
['Hello, world!', 'Welcome to Python!']
上述代码中,我们定义了一个空列表lines,然后在for循环中,使用line.strip()函数去除每一行的前后空格,并将结果添加到列表中。最后,我们打印这个列表,即得到了文件的内容。这种方式可以方便地对文件内容进行一些处理和分析。
除了操作文本文件外,FileInput()函数还可以操作压缩文件。比如,我们可以读取并打印一个gzip压缩文件example.txt.gz的内容:
import fileinput
import gzip
filename = "example.txt.gz"
with fileinput.FileInput(filename, openhook=gzip.open) as f:
for line in f:
print(line.decode("utf-8"), end="")
运行以上代码,我们会得到与之前示例相同的输出。
上述代码中,我们首先导入gzip模块,并通过openhook参数指定gzip.open函数作为打开文件的方法。这样,我们便可以打开并读取gzip压缩的文件。最后,我们需要使用line.decode("utf-8")将读取到的字节串转为字符串。这是因为gzip文件中存储的是二进制数据,在打印时需要进行解码。
