python-problem-大文件的读取

简介: python读取大文件一.问题博主在使用glove840b词向量的时候,遇到的一些坑。这个词向量大概有5.25个G容量,并且我需要按照行来进行处理。

python读取大文件


一.问题

博主在使用glove840b词向量的时候,遇到的一些坑。这个词向量大概有5.25个G容量,并且我需要按照行来进行处理。然后我直接用了

f = open(path,encoding="utf-8").readlines()

然后内存就炸了。我可是16G的内存呢。

二.对比几种读文件的方法

1.with

with open(path, encoding="utf-8") as f:
    for line in f:
        dosomething()

只占用4.6M内存
注意这种方法每一行最后会有一个’\n’

There should be one – and preferably only one – obvious way to do it.

2.直接遍历

f = open(path, encoding="utf-8")
for line in f:
    dosomething()

只占用4.6M内存
注意这种方法每一行最后会有一个’\n’
这里我想说用with和直接每次读一行进行遍历,实际上是一样的效果的。只是with有一些好处,我打算下一章专门写一下with。先举个列子,用with,就不用在读文件结束的时候写f.close()了。

3.使用readlines()

f = open(path, encoding="utf-8").readlines()
for line in f:
    dosomething()

这种方法会把整个文件一次性加载在内存中,对于小文件来说,处理起来,速度会更快。
但是加载5.25的G的文本的时候,内存直接就爆满了。

4.使用yield配合readline

三.总结

尽量使用with的方法吧。
但是如果文章真的不是很大的话,或者内存足够大的话,还是用readlines比较好,速度能够提升好多。可以具体比较一下。





参考
https://stackoverflow.com/questions/8009882/how-to-read-large-file-line-by-line-in-python

相关文章
|
2月前
|
Python
python知识点100篇系列(14)-分割大文件然后在合并
【10月更文挑战第2天】在工作中,因邮件附件大小限制或网络条件不佳,常需将大文件分割为小文件发送,接收后再合并。Python的文件读写功能可轻松实现此需求,也可借助第三方库filesplit简化操作。安装filesplit后,仅需几行代码即可完成文件的分割与合并,但掌握Python内置方法同样重要。
|
2月前
|
数据处理 Python
如何优化Python读取大文件的内存占用与性能
如何优化Python读取大文件的内存占用与性能
135 0
|
2月前
|
数据处理 Python
Python读取大文件的“坑“与内存占用检测
Python读取大文件的“坑“与内存占用检测
53 0
|
4月前
|
存储 Serverless 数据安全/隐私保护
使用 Python 获取大文件的 MD5 哈希值
【8月更文挑战第27天】
88 2
|
5月前
|
网络安全 API Python
Python下载大文件时遇到了SSL握手失败,要怎么办?
在 Python 数据集下载中常遇程序中断问题, 如网络不稳定、API请求数量限制等。网络不稳定时可通过实现重试机制与使用短效代理IP应对。示例代码利用 `requests` 库实现自动重试功能,提高下载成功率。对于 API 请求数量限制,可通过控制请求速率和轮换代理IP解决。示例展示了如何控制请求间隔及使用代理池轮换来避免触发限制。这些技巧有助于确保下载任务的顺利进行。
|
Python
Python读取大文件
Python读取大文件自制脑图, 介绍了read 函数应用和读取大文件的方式。 read() 读取文件内容 默认值是(read=-1)读取文件中所以的内容 文件太大直接调用 raed() 会导致文件内容在加载到系统内存中的时候导致文件丢失或者泄漏 haep( ) 查看命令的帮助手册。 如果文件太大一次读取会对文件内存消耗大系统性能消耗大,分块读取就会降低内存消耗和系统性能的消耗。
112 3
Python读取大文件
|
存储 Sentinel Python
python花式读取大文件(10g/50g/1t)遇到的性能问题(面试向)
最近无论是面试还是笔试,有一个高频问题始终阴魂不散,那就是给一个大文件,至少超过10g,在内存有限的情况下(低于2g),该以什么姿势读它?
python花式读取大文件(10g/50g/1t)遇到的性能问题(面试向)
|
数据库 Python
Python 查找两个大文件中不同内容
Python 查找两个大文件中不同内容
python 下载大文件,断点续传 | Python工具类
python 下载大文件,断点续传 | Python工具类
python 下载大文件,断点续传 | Python工具类