当前位置: 首页 > 图灵资讯 > 技术篇> 使用 Python 拆分文本文件的最快方法

使用 Python 拆分文本文件的最快方法

来源:图灵教育
时间:2023-06-15 09:27:25

在 Python 根据文件的大小和所需的输出格式,可以通过多种方式完成文本文件的拆分。在本文中,我们将讨论使用 Python 在考虑代码的性能和可读性的同时,拆分文本文件的最快方法。

使用 Python 拆分文本文件的最快方法_字符串

拆分() 方法

拆分文本文件最直接的方法之一是使用 Python 中内置的 split() 函数。该函数将字符串分为子字符串列表,基于指定的分隔符。

例如,以下代码根据换行符拆分文本文件,并返回行列表 -

with open('file.txt', 'r') as f:    lines = f.read().split('\n')

复制

这里

内置的 split() 函数通过换行符拆分文本文件,并返回行列表。

首先使用代码 open() 以“函数打开文件”r作为一种模式,代表读取。这将返回一个存储在变量中的文件对象 f 中。

接下来,在文件对象上使用 read() 该方法将文件的所有内容作为单个字符串读入内存。

然后在这个字符串上调用 split() 函数,换行符 \n 作为分离符传输。这将将字符串分为子字符串列表,每个子字符串对应于原始文件中的一行。最后,结果存储在变量行中。

readline() 方法

以前的方法简单易读,但对于大文件来说可能很慢,因为它在拆分前将整个文件读入内存。如果你正在处理一个大文件,你可能需要考虑重用它 readline() 该方法一次读取一行。

with open('file.txt', 'r') as f:    lines = []    for line in f:       lines.append(line)

复制

从示例中,

代码首先以与上一个例子相同的方式打开文件。

然后我们创建了一个名为行的空列表。接下来,我们使用它 for 文件对象的循环。

readline() 方法在 for 调用循环中的文件对象,从文件中读取一行,并将其分配给变量行。然后将此变量添加到行列表中。

这样,整个文件将逐行读取并存储在列表中。

这种方法比前一种方法快,因为它一次读取一行,不需要将整个文件加载到内存中。然而,它仍然读取整个文件,对于非常大的文件可能非常缓慢。

mmap 模块

另一种选择是使用 Python 中的 mmap 模块允许您映射文件的内存,从而为您提供一种访问文件的有效方法,就像它在内存中一样。以下是如何使用它 mmap 拆分文本文件的示例 -

import mmap with open('file.txt', 'r') as f:    # memory-map the file    mmapped_file = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)    # split the file by newline characters    lines = mmapped_file.read().split('\n')

复制

这种方法对于大文件来说是最有效的,因为它允许你像内存中一样访问文件,而不需要将整个文件加载到内存中。

首先导入代码 mmap 模块。

接下来,以与以前相同的方式打开文件,并调用文件对象 fileno() 获取文件描述符的方法。

作为第一个参数传递给它 mmap() 函数,以及 0 和 mmap。ACCESS_READ分别作为第二个和第三个参数。存储在变量mmapped_file中的内存映射文件。

然后调用内存映射文件 read() 方法,文件像以前一样将文件的所有内容读取到单个字符串中。

然后在这个字符串上调用 split() 再次使用换行符函数 \n 作为分离符传输。这将将字符串分为子字符串列表,每个子字符串对应于原始文件中的一行。最后,结果存储在变量行中。