如何使用Python读取超大文本文件

Python是一种开放源代码的动态类型化和解释型编程语言。读取和写入文件是编程的组成部分。在Python中, 使用readlines()方法。 readlines()方法返回一个列表, 其中列表的每个项目都是文件中的完整句子。当文件较小时, 此方法很有用。由于readlines()方法将每行追加到列表中, 然后返回整个列表, 因此如果文件的大小非常大(以GB为单位), 则将非常耗时。同样, 该列表将占用大量内存, 如果没有足够的内存, 则可能导致内存泄漏。为避免此问题, 我们可以使用文件对象作为迭代器来迭代文件并执行所需的任务。由于迭代器仅迭代整个文件, 并且不需要任何其他数据结构来存储数据, 因此消耗的内存相对较少。而且, 迭代器不会执行像追加这样的昂贵操作, 因此它也是省时的。文件在Python中是可迭代的, 因此建议使用迭代器。

以下两个程序演示了如何使用Python读取大型文本文件。

方法1:

第一种方法利用迭代器遍历文件。在这项技术中, 我们使用文件输入Python中的模块。 fileinput模块的input()方法可用于读取文件。与readlines()相比, 使用此方法的优点是fileinput.input()不会将整个文件加载到内存中。因此, 不存在内存泄漏的机会。 fileinput.input()方法采用文件名列表, 如果未传递任何参数, 它将接受来自stdin的输入。该方法返回一个迭代器, 该迭代器从要扫描的文本文件返回单独的行。

代码实现:

# 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)

方法2:

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

代码实现:

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)

以上两种方法都可以很方便的读取超大文本文件,希望能对大家有所帮助。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

衡水世耀科技有限公司

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值