个性化阅读
专注于IT技术分析

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

本文概述

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中读取大型文本文件?1

说明:

input()方法返回一个迭代器, 该迭代器扫描整个文件并打印每一行。

方法2:

第二种方法还使用迭代器来读取文件。唯一的区别是我们将使用文件对象的迭代器。 open()使用的方法将整个文件包装到一个文件对象中。接下来, 我们使用迭代器来获取文件对象中的行。我们在” with”块中打开文件, 因为它会在整个块执行后立即自动关闭文件。随着with块的完成, 将调用__exit __()方法, 该方法将释放所有打开的资源。

代码实现:

Python3

import time
  
start = 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中读取大型文本文件?2

说明:

这种方法所需的时间相对较少。该程序也可以不加障碍地编写, 但是在这种情况下, 我们必须确保显式关闭文件资源。

首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。


赞(0)
未经允许不得转载:srcmini » 如何在Python中读取大型文本文件?

评论 抢沙发

评论前必须登录!