Python 内置库fileinput
引言
在进行读写文件的操作时,Python内置的fileinput
库提供了方便快捷的函数和类,可以实现对文件的逐行操作和修改。本文将详细介绍fileinput
库的使用方法和常见应用场景。
一、fileinput库概述
fileinput
库是Python标准库中的一个内置库,通过该库可以实现对文件的简单操作,如读取文件、逐行操作、修改文件等。使用fileinput
库,可以避免频繁打开和关闭文件,提高了文件操作的效率。
二、打开文件
在使用fileinput
库操作文件之前,首先需要打开文件。fileinput
库提供了两种打开文件的方式:
1. 通过文件名打开
可以通过传入文件的路径和文件名,使用fileinput.input()
函数打开文件。
import fileinput
file = fileinput.input(files=('example.txt', 'test.txt'))
2. 通过文件对象打开
可以通过先打开文件对象,然后将文件对象传入fileinput.input()
函数中。
import fileinput
with open('example.txt', 'r') as f:
file = fileinput.input(files=f)
三、逐行操作文件
1. 读取文件内容
fileinput
对象提供了readlines()
方法,可以一次性读取文件中的所有内容,并返回一个列表。
import fileinput
for line in fileinput.input('example.txt'):
print(line, end='')
2. 遍历文件行
可以直接使用fileinput
对象进行迭代,每次迭代返回文件的一行。
import fileinput
for line in file:
print(line, end='')
3. 获取当前行的行号
使用fileinput
对象的lineno()
方法,可以获取当前行的行号。
import fileinput
line_num = fileinput.lineno()
print(f"Current line number: {line_num}")
4. 获取当前文件的基本信息
通过fileinput
对象的filename()
方法,可以获取当前文件的文件名。
import fileinput
filename = fileinput.filename()
print(f"Current filename: {filename}")
四、修改文件
1. 逐行替换内容
fileinput
对象提供了lineno()
方法和linecontent()
方法,可以用来获取当前行的行号和内容。可以通过修改当前行的内容,实现对文件的逐行修改。
import fileinput
with fileinput.input(inplace=True) as file:
for line in file:
line_num = fileinput.lineno()
line_content = fileinput.linecontent()
# 根据自己的需求修改当前行内容
modified_line = line.replace('old_content', 'new_content')
print(modified_line, end='')
2. 追加内容到文件末尾
使用fileinput
对象的fileinput.filelineno()
方法和fileinput.nextfile()
方法,可以获取当前文件的行号,并在文件末尾追加内容。
import fileinput
with fileinput.input(inplace=True) as file:
for line in file:
if fileinput.filelineno() == fileinput.lineno():
# 根据自己的需求向文件末尾追加内容
print("This line will be appended to the end of the file.", end='')
print(line, end='')
五、关闭文件
完成文件操作后,需要关闭文件。可以使用fileinput
对象的fileinput.close()
方法来关闭文件。
import fileinput
fileinput.close()
六、示例代码运行结果
下面是一个使用fileinput
库对示例文件进行逐行操作和修改的示例代码:
import fileinput
# 读取文件内容
with fileinput.input('example.txt') as file:
for line in file:
print(line, end='')
# 修改文件
with fileinput.input(files='example.txt', inplace=True) as file:
for line in file:
modified_line = line.replace('old_content', 'new_content')
print(modified_line, end='')
# 追加内容到文件末尾
with fileinput.input(files='example.txt', inplace=True) as file:
for line in file:
if fileinput.filelineno() == fileinput.lineno():
print("This line will be appended to the end of the file.", end='')
print(line, end='')
# 关闭文件
fileinput.close()
以上代码示例可实现对文件的读取、逐行修改和追加内容操作。
结论
fileinput
库是Python内置的一个非常有用的文件操作库,可以实现对文件的逐行操作和修改。通过本文的介绍,相信你已经了解了如何使用fileinput
库进行文件操作。