在 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 作为分离符传输。这将将字符串分为子字符串列表,每个子字符串对应于原始文件中的一行。最后,结果存储在变量行中。