• 日常搜索
  • 端口查询
  • IP查询
  • 在线工具
  • 搜本站

如何使用Python更改多个文件实现批量替换

有时您需要在多个文本文件里批量替换,例如,如果您想更新某些文件以使用美式拼写而不是英式拼写。

在这个快速提示中,我将向您展示一个示例,其中我们有五个拼写错误的文本文件。也就是说,不是写“ World ”,而是写“ Wolrd ”。该示例将向您展示我们如何使用 Python 来更正目录中包含的所有文本文件中该单词的拼写。

让我们开始吧!

如何使用Python更改多个文件实现批量替换  第1张

1、数据准备

在我们继续这个例子之前,让我们准备我们想要使用的数据(文本文件)。对于本教程,我们将创建一个名为hello的目录,其中将包含不同的文件和子目录,包括名为1.txt、2.txt、3.txt、4.txt和5.txt的文本文件。

虽然我们将用于遍历文件列表的函数将包括目录中的所有文件,但我们可以在代码中添加自己的条件来限制我们要修改的文件。

2、执行

让我们进入有趣的部分。我们需要做的第一件事是读取目录hello的内容。为此,我们可以使用scandir()方法,如下:


import os
directory = os.scandir('hello')

此方法返回一个迭代器。我们可以使用它创建一个for循环来查看目录中的所有文件:


entries = [it.name for it in directory]
print(entries)

在这种情况下,我们将得到:


['.nomedia', '1.txt', '2.txt', '3.txt', '4.txt', '5.txt', 'others']

这表明我们在hello目录中有五个.txt文件。但是,它还包含一些其他文件和子目录。

现在我们将遍历目录hello中的所有文件。for-in我们可以在使用with语句时在循环的帮助下做到这一点。当我们执行完此块中的代码时,这将自动释放资源。


with os.scandir('hello') as directory:
for item in directory:

由于我们要在目录中的五个文件中的每一个中查找Wolrd,所以这个阶段的正常做法是打开并读取每个文件的内容。我们将使用方法跳过目录,使用文件名上的方法跳过以字符is_file()开头的文件。这使我们只能读取和写入我们实际打算修改的文件。.startswith()

我们还使用mode中的open()方法打开文件。r+这允许我们读取文件的内容,然后在进行必要的更改后写入文件。


if not item.name.startswith('.') and item.is_file():
with open(item, mode="r+") as file:
file_text = file.read()

现在是至关重要的一步,尤其是在讨论模式匹配时——在我们的例子中,搜索Wolrd。此步骤使用正则表达式。在 Python 中,为了使用正则表达式,我们将使用re模块。

我们将使用该模块中的两个主要功能。第一个是compile()

将正则表达式模式编译成正则表达式对象,可以使用它的match()search()方法进行匹配。

第二个是sub(),用正确的拼写代替错误的拼写。因此,我们将执行以下操作:


regex = re.compile('Wolrd')
file_text = regex.sub('World', file_text)

最后,我们希望将替换后的新文本写入我们的文件,如下所示:


file.seek(0)
file.write(file_text)

3、最后

在本节中,让我们看看将在每个文件中查找Wolrd并将其替换为World的整个 Python 脚本的外观:



import os, re
with os.scandir('hello') as directory:
for item in directory:
if not item.name.startswith('.') and item.is_file():
with open(item, mode="r+") as file:
file_text = file.read()
regex = re.compile('Wolrd')
file_text = regex.sub('World', file_text)
file.seek(0)
file.write(file_text)

正如我们所见,Python 使得使用 for 循环对多个文件进行修改变得非常容易。这里要记住的另一个重要部分是使用正则表达式进行模式匹配。

如果您想了解更多关于 Python 循环的信息,请查看Python 循环上的平滑复习。并且,有关正则表达式的更多信息,请查看Python 中的正则表达式。

文章目录
  • 1、数据准备
  • 2、执行
  • 3、最后
  • 发表评论