全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  应聘面试  >  Python面试题

【Python面试题】如何读取大文件?

发布时间:2022-08-23 10:29:00
发布人:wjy

如何读取大文件,例如内存只有4G,如何读取一个大小为8G的文件?

很显然4G内存要一次性的加载大小为8G的文件是不现实的,遇到这种情况必须要考虑多次读取和分批次处理。

在Python中读取文件可以先通过open函数获取文件对象,在读取文件时,可以通过read方法的size参数指定读取的大小,也可以通过seek方法的offset参数指定读取的位置,这样就可以控制单次读取数据的字节数和总字节数。

除此之外,可以使用内置函数iter将文件对象处理成迭代器对象,每次只读取少量的数据进行处理,代码大致写法如下所示。

with open('...', 'rb') as file: for data in iter(lambda: file.read(2097152), b''): pass 在Linux系统上,可以通过split命令将大文件切割为小片,然后通过读取切割后的小文件对数据进行处理。

例如下面的命令将名为filename的大文件切割为大小为512M的多个文件。

split -b 512m filename 如果愿意, 也可以将名为filename的文件切割为10个文件

命令如下所示。 split -n 10 filename

扩展:外部排序跟上述的情况非常类似,由于处理的数据不能一次装入内存,只能放在读写较慢的外存储器(通常是硬盘)上。“排序-归并算法”就是一种常用的外部排序策略。

在排序阶段,先读入能放在内存中的数据量,将其排序输出到一个临时文件,依此进行,将待排序数据组织为多个有序的临时文件,然后在归并阶段将这些临时文件组合为一个大的有序文件,这个大的有序文件就是排序的结果。

千锋教育

相关文章

华为外包python面试题-Python实现斐波那契数列

2023-07-25

常见Python程序员面试题

2023-07-21

Python面试题及答案

2023-07-20

matlab和python实现pca降维算法

2023-03-29

【Python面试题】运行下面的代码是否会报错?

2022-08-23

【Python面试题】对下面给出的字典按值从大到小对键进行排序。

2022-08-23
在线咨询 免费试学 教程领取