欢迎访问宙启技术站
智能推送

Python中的FileInput()函数用法和示例解析

发布时间:2024-01-05 20:27:52

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文件中存储的是二进制数据,在打印时需要进行解码。