Python 如何删除文本文件中的特定行
在本文中,我们将展示如何使用Python从文本文件中删除特定/特定的行。
假设我们有一个名为 TextFile.txt 的文本文件,其中包含一些随机文本。我们将从文本文件中删除特定行(例如第2行)。
TextFile.txt
Good Morning
This is Tutorials Point sample File
Consisting of Specific
source codes in Python,Seaborn,Scala
Summary and Explanation
Welcome everyone
Learn with a joy
步骤
以下是执行所需任务的算法/步骤:
- 创建一个变量来存储文本文件的路径。
-
使用 open() 函数(打开文件并返回文件对象)以只读模式打开文本文件,将文件名和模式作为参数传递给它(这里 “r” 表示只读模式)。
with open(inputFile, 'r') as filedata:
- 使用 readlines() 函数(返回一个列表,其中每一行作为一个列表项表示。若要限制返回的行数,请使用提示参数。如果返回的字节总数超过指定的数字,将不会返回更多行)来获取给定输入文本文件的行列表。
file.readlines(hint)
-
创建一个变量(保存行号)并初始化其值为1。
-
使用 open() 函数(打开一个文件并返回文件对象作为结果)通过传入文件名和模式作为参数来以写入模式打开给定的文本文件(这里 “w” 表示写入模式)。
with open(inputFile, 'w') as filedata:
-
使用for循环遍历文件的每一行。
-
使用 input() 函数将要删除的行号作为动态输入(input()函数从用户输入中读取一行,消除尾部的换行符并将其转换为字符串,然后将其返回。当遇到EOF时,会抛出EOFError异常),并使用 int() 函数将其类型转换为整数。
-
使用if条件语句判断行索引(行号)是否不等于给定的删除行号。
-
如果条件为真,则使用 write() 函数将对应的行写入文件(write()函数将指定的文本写入文件。提供的文本将根据文件的模式和流位置插入)。
-
增加行索引(行号)的值1。
-
如果给定的特定行删除成功,则打印一些随机文本。
-
再次使用open()函数以读模式打开输入文件,以打印删除给定行后的文件内容。
-
使用for循环遍历文件的每一行。
-
打印文本文件的每一行。
-
使用 close() 函数关闭输入文件(用于关闭已打开的文件)。
示例
以下是一个从文本文件中删除给定行并打印结果文件内容的程序示例−
# input text file
inputFile = "TextFile.txt"
# Opening the given file in read-only mode.
with open(inputFile, 'r') as filedata:
# Read the file lines using readlines()
inputFilelines = filedata.readlines()
# storing the current line number in a variable
lineindex = 1
# Enter the line number to be deleted
deleteLine = int(input("Enter the line number to be deleted = "))
# Opening the given file in write mode.
with open(inputFile, 'w') as filedata:
# Traverse in each line of the file
for textline in inputFilelines:
# Checking whether the line index(line number) is
# not equal to a given delete line number
if lineindex != deleteLine:
# If it is true, then write that corresponding line into file
filedata.write(textline)
# Increase the value of line index(line number) value by 1
lineindex += 1
# Print some random text if the given particular line is deleted successfully
print("Line",deleteLine,'is deleted successfully\n')
# Printing the file content after deleting the specific line
print("File Content After Deletion :")
# Reading the file again in read mode
givenFile = open(inputFile,"r")
# Traversing the file line by line
for line in givenFile:
# printing each line
print(line)
# Closing the input file
filedata.close()
输出
在执行后,上述程序将生成以下输出 –
Enter the line number to be deleted = 2
Line 2 is deleted successfully
File Content After Deletion :
Good Morning
Consisting of Specific
source codes in Python,Seaborn,Scala
Summary and Explanation
Welcome everyone
Learn with a joy
我们给我们的程序一个包含一些随机内容的文本文件,然后以读取模式打开它。我们创建了一个变量来存储当前行号,并将其初始化为1,起始行号。我们遍历该文件直到达到末尾,然后检查用户输入的数字是否等于要删除的行号。如果为假,则我们不需要删除或移除该行,因此我们将其写入文件。我们不是删除指定的行,而是将剩余的行添加到文件中,因此被删除的行不会出现在结果文件中。对于每一行,行号的值增加一。
在本文中,我们学习了如何从文本文件中删除特定的行,并将剩余的行保存在同一文章中。除此之外,我们还学习了如何从开头到结尾遍历整个文本文件,以及如何读取和写入数据到文本文件。