Python3,超大文件数据读取困难?那看完这一篇,保证完美解决你的痛点。

1、引言

小屌丝:鱼哥,求助,求助!
小鱼:别慌…稳住…
小屌丝:老板让我打开一个超大的文本文件,我这打开不。
小鱼:就这…
小屌丝:那可不咋滴, 老板让我立刻马上麻溜的打开。
小鱼:如果打不开呢?
小屌丝:打不开? 那是不可能的。
小鱼:既然可以打开,那你就打喽。
小屌丝:我要是能打开, 我还跟你说个六啊
小鱼:这绕了一大圈子, 感情是让我替你打开这超大文本文件啊。
在这里插入图片描述

小屌丝:嘿嘿, 鱼哥,我这不是没有办法了嘛
小鱼:我差点信了。
小屌丝:鱼哥,你就信我这一次呗。
小鱼:我信你个腿,你坏的很。
小屌丝:就一次, 保证就一次。
小鱼:好吧…
小屌丝:嘿嘿,那开整了。

2、代码实战

2.1 with open

最常用的方式之一,非常的简单:
代码示例

with open('file_name.txt') as f:
	# 循环迭代每一行
    for line in f:

2.2 mmap

mmap 是读取二进制文件,如 图像,视频文件等,也是很简单。
代码示例

import mmap
with open('file_name.bin', 'r+b') as f:
    mmapped_file = mmap.mmap(f.fileno(), 0)
    # 对mmapped_file 关闭进行操作
    mmapped_file.close()

2.3 Dask

Dask是Python多流行的库, 这里我就不多说了, 主要处理大型数据集,
使用 dask.dataframe函数,将大型数据集分成多个块,并在每个块上执行操作。
我们来看代码。

代码示例

import dask.dataframe as dd
# 读取 CSV 文件
df = dd.read_csv('file_name_data.csv')
# 对数据集进行操作
result = df.groupby('column_name').mean()
# 将结果保存到文件
result.to_csv('result.csv')

2.4 Pandas

Pandas 是处理大文件必备的一个库, 如果你不了解,可以去小鱼的这篇:

9分钟就入门, 非常的简单。
当然,这里我也上一个示例。

代码示例

import pandas as pd
# 读取 CSV 文件,iterator=True 将文件分块读取
df = pd.read_csv('file_name.csv', iterator=True, chunksize=1000)
for chunk in df:
    # 对每个 chunk 进行处理

2.5 Hadoop

大数据必备的库之一:Hadoop,
这也是小鱼接下来要去搞得方向之一(大数据算法,专栏会在不久跟大家见面。 )

大数据算法专栏
会详细的介绍大数据,大数据仓储,大数据算法,发数据应用,大数据测试等技术。
我就不在这里过多的唠叨了

接下来,我就上一个示例,先睹为快

代码示例

from hdfs import InsecureClient
client = InsecureClient('http://localhost:80008')
# 读取文件
with client.read('/data/file_name.txt', encoding='utf-8') as reader:
    for line in reader: # 对每一行进行处理
       

2.6 PySpark

PySpark 是 Python 中的 Spark API,它可以并行处理大型数据集。
同样,我们也可以使用 PySpark 读取和处理大型数据文件。

代码示例

from pyspark.sql import SparkSession
# 创建 SparkSession 对象
spark = SparkSession.builder.appName('LargeFile').getOrCreate()
# 读取 CSV 文件
df = spark.read.csv('file_name.csv', header=True, inferSchema=True)
# 对数据集进行操作
result = df.groupby('column_name').mean()
# 将结果保存到文件
result.write.csv('result.csv')

3、总结

看到这里,今天的分享差不多就结束了。
今天主要针对超大型数据文本文件的读取进行了一些总结及分享。

  • with open
  • mmap
  • Pandas
  • Dask
  • Hadoop
  • PySpark

当然,如果你有其他好的方法,也可以在评论区进行留言哦 。

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 51认证讲师等
  • 认证金牌面试官
  • 职场面试及培训规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)测评一、二等奖获得者

我是小鱼,关注我,带你学习更多更专业更前言的测试开发技术。

猜你喜欢

转载自blog.csdn.net/wuyoudeyuer/article/details/131432785