如何在Python中清除一个文本文件

301 阅读7分钟

虽然程序经常被用来创建文件,但有时程序员也需要清除文件数据。幸运的是,有多种方法可以清除文件中的文本。在这篇文章中,我们将用一些简单的例子来演示如何用Python清除一个文本文件。

通过利用Python的一些标准工具,我们可以打开、读取和清除文本文件。我们还将学习如何使用片断符号从一个文本文件中删除特定的行。

Python 简化了文件处理的过程,从而使程序更加简洁。学习本指南的结果是,你将理解 Python 如何清除文本文件和删除数据行。

在写模式下使用 open() 函数清除一个文本文件

以写模式打开一个文件将自动删除文件的内容。open() 函数需要两个参数,我们想打开的文本文件和我们要打开的模式。

在写模式下打开一个文件会清除其数据。另外,如果指定的文件不存在,Python 将创建一个新的文件。删除一个文件的最简单方法是使用 open() 并在写模式下把它赋值给一个新的变量。

file_to_delete = open("info.txt",'w')
file_to_delete.close()

Pythonwith 语句简化了异常处理。使用with模式下打开一个文件也会清除它的数据。一个传递语句完成了这个例子。

# clear the data in the info file
with open("info.txt",'w') as file:
    pass

如何用 truncate() 方法清除一个文件

truncate()方法减少了文件的大小。这个方法需要一个可选的参数来设置文件的新大小。如果没有提供参数,文件将保持不变。

试图将一个文件截断到比它原来的大小长,可能会产生意想不到的结果。例如,如果截断的大小超过了原始文件的大小,程序可能会在文件的末尾添加白色空间。

我们将使用一个演示文本文件来测试 Python 截断文件的能力。

info.txt
Guido van Rossum 在 1991 年创建了 Python。
Python 是一种通用的编程语言。
Python的优势之一是可读性。

with open("info.txt",'r+') as file:
    file.truncate(16)

# read the file’s contents
with open("info.txt", 'r') as file:
    lines = file.readlines()
    for line in lines:
        print(line)

输出

Guido van Rossum

在上面的例子中,truncate()方法将文件缩减为前16个字符的文本。注意我们是以读和写两种模式打开文件的。这对于截断方法的工作来说是必要的。

通过给 truncate() 方法传递一个0 的值,可以完全清除文本文件。

with open("example.txt",'r+') as file:
    file.truncate(0)

上面的 Python 代码将清除一个文本文件的内容。以这种方式使用truncate()方法将把文件的大小减少到0,删除文件中的任何内容。

使用Python列表切片清除一个文本文件

使用 Python 切片符号,可以检索一个列表、字符串或元组的子集。使用这一 Python 特性,我们可以定义一个给定子集的开始和结束索引。

切片符号法使用一种特殊的语法来寻找一个数值范围的子集。下面的例子显示了切片符号法是如何工作的。通过定义分片的开始、结束和步骤,我们将得到原始列表的一个子集。

nums = [1,2,3,4,5,6,7,8,9]
sub = nums[1:8:2]
print(sub)

输出

[2, 4, 6, 8]

接下来,我们将使用上一节中的info.txt文档来演示如何使用切片符号来清除文本文件中的行。readlines()方法将返回一个文档中的文本行数列表。

在提取了这些行之后,我们可以使用切片符号来创建一个新的列表,我们将用它来覆盖旧文件。只有第一行文本将被保留。其他的将被从文本文件中清除掉。

# read the file's contents
read_file = open("info.txt",'r')
lines = read_file.readlines()
read_file.close()

write_file = open("info.txt",'w')

# slice the file's content
lines = lines[:1]

for line in lines:
    write_file.write(line)
    print(line)

write_file.close()

输出

Guido van Rossum created Python in 1991.

如何从一个文本文件中删除特定的行

使用一些常见的 Python 函数,我们也可以从文本文件中清除特定的数据行。如果我们提前知道我们要删除哪些行,那就特别有帮助。在这种情况下,我们可以使用片断符号来检索文件的一个子集。

通过在文件上写入其数据的子集,我们可以删除文本行。下面的例子使用了美国作家兰斯顿-休斯(Langston Hughes)的诗歌 "Dream Deferred "中的一段节选。

dream.txt
梦想被推迟会怎样?
它是否会像阳光下的葡萄干一样干枯

清除文本文件的第一行

为了清除一个文件中的第一行文本,我们需要使用一些 Python 的文件处理方法。首先,我们将使用readlines() 来获得一个文件的文本数据的列表。通过seek() 方法,我们可以手动调整文件指针的位置。

第二,我们可以使用truncate() 方法来调整文件的大小。第三,我们要向文件写入一个新的行数列表。使用slice符号,可以省略原始文件的第一行。

with open("dream.txt",'r+') as file:
    # read the lines
    lines = file.readlines()

    # move to the top of the file
    file.seek(0)
    file.truncate()

    file.writelines(lines[1:])

with open("dream.txt",'r') as file:
    lines = file.readlines()

for line in lines:
    print(line)

输出

Does it dry up

Like a raisin in the sun?

清除文本文件中的多行

从一个文件中删除多行文本也是可能的。使用切片符号,我们可以创建我们想要的任何数据子集。使用这种覆盖原始文件的方法,我们可以有效地清除文件中任何不需要的数据。

通过改变分片的开始和结束索引,我们会得到dream.txt文件的不同子集。也可以将切片的列表结合起来。在创建列表的子集时,使用这些工具提供了大量的通用性。

with open("dream.txt",'r+') as file:
    # read the lines
    lines = file.readlines()

    # move to the top of the file
    file.seek(0)
    file.truncate()

    file.writelines(lines[:3])

with open("dream.txt",'r') as file:
    lines = file.readlines()

for line in lines:
    print(line)

输出

What happens to a dream deferred?

如何用一个字符串清除一个文本文件

如果我们想从一个包含某个单词、短语或数字的字符串中删除一行怎么办?我们可以使用 Python 的if语句来检查每一行的字符串数据。如果我们要找的字符串在这一行中,我们可以避免把它包括在输出文件中。

employee.txt
姓名。Jamie Jameson
年龄:37岁
职业:文案策划。文案策划人
开始日期。2019年4月3日

在这个例子中,我们需要将文件打开三次。首先,我们将打开该文件,提取其内容。接下来,我们将把数据写入一个新文件,清除我们不需要的行。最后,我们需要打开文件并读取它,以证明文件的处理是正确的。

data_file  = open("employee.txt",'r')
lines = data_file.readlines()
data_file.close()

write_file = open("employee.txt",'w')
for line in lines:
    if "Age" not in line:
        write_file.write(line)

write_file.close()

read_file = open("employee.txt",'r')
lines = read_file.readlines()
read_file.close()

for line in lines:
    print(line)

输出

Name: James Jameson

Occupation: Copywriter

Starting Date: April 3, 2019

总结

在这篇文章中,我们深入研究了如何在 Python 中清除文本文件。我们看到 Python 语言为完成这项任务提供了许多选择。使用每个Python安装中的一些标准方法和函数,我们能够清除整个文件,以及从文件中删除特定的行。

虽然像切分符号这样的工具对于清除文本文件是很好的,但它们在其他领域也很有用。这样,你学习的Python的每一个新功能都会提高你的整体编码能力。