如何在Python中读取大型文本文件()

本文概述

  • Python3
  • Python3
Python是一种开放源代码的动态类型化和解释型编程语言。读取和写入文件是编程的组成部分。在Python中, 使用readlines()方法。 readlines()方法返回一个列表, 其中列表的每个项目都是文件中的完整句子。当文件较小时, 此方法很有用。由于readlines()方法将每行追加到列表中, 然后返回整个列表, 因此如果文件的大小非常大(以GB为单位), 则将非常耗时。同样, 该列表将占用大量内存, 如果没有足够的内存, 则可能导致内存泄漏。为避免此问题, 我们可以使用文件对象作为迭代器来迭代文件并执行所需的任务。由于迭代器仅迭代整个文件, 并且不需要任何其他数据结构来存储数据, 因此消耗的内存相对较少。而且, 迭代器不会执行像追加这样的昂贵操作, 因此它也是省时的。文件在Python中是可迭代的, 因此建议使用迭代器。
以下两个程序演示了如何使用Python读取大型文本文件。
方法1:
第一种方法利用迭代器遍历文件。在这项技术中, 我们使用文件输入Python中的模块。 fileinput模块的input()方法可用于读取文件。与readlines()相比, 使用此方法的优点是fileinput.input()不会将整个文件加载到内存中。因此, 不存在内存泄漏的机会。 fileinput.input()方法采用文件名列表, 如果未传递任何参数, 它将接受来自stdin的输入。该方法返回一个迭代器, 该迭代器从要扫描的文本文件返回单独的行。
代码实现:
Python3
# import module import fileinput import time#time at the start of program is noted start = time.time()#keeps a track of number of lines in the file count = 0 for lines in fileinput. input ([ 'sample.txt' ]): print (lines) count = count + 1#time at the end of program execution is noted end = time.time()#total time taken to print the file print ( "Execution time in seconds: " , (end - start)) print ( "No. of lines printed: " , count)

输出如下:
如何在Python中读取大型文本文件()

文章图片
说明:
input()方法返回一个迭代器, 该迭代器扫描整个文件并打印每一行。
方法2:
第二种方法还使用迭代器来读取文件。唯一的区别是我们将使用文件对象的迭代器。 open()使用的方法将整个文件包装到一个文件对象中。接下来, 我们使用迭代器来获取文件对象中的行。我们在” with” 块中打开文件, 因为它会在整个块执行后立即自动关闭文件。随着with块的完成, 将调用__exit __()方法, 该方法将释放所有打开的资源。
代码实现:
Python3
import timestart = time.time() count = 0 with open ( "sample.txt" ) as file : for line in file : print (line) count = count + 1 end =time.time() print ( "Execution time in seconds: " , (end - start)) print ( "No of lines printed: " , count)

输出如下:
如何在Python中读取大型文本文件()

文章图片
说明:
这种方法所需的时间相对较少。该程序也可以不加障碍地编写, 但是在这种情况下, 我们必须确保显式关闭文件资源。
【如何在Python中读取大型文本文件()】首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。

    推荐阅读