使用python实现分割大文件然后在合并

技能实验室 发表于 2022/11/23 22:55:54 2022/11/23
【摘要】 实际工作中,有时候需要通过邮箱发送文件,但是邮箱对文件大小是有限制的,所以在发送大文件的时候,需要将大文件分割成多个小文件单独发送,接收方接收后再合并;就能实现大文件的传输,当然也适用于网络不佳的情况下,发送小文件;这个需求,python就能干用的了Python中 的文件读写功能!分割大文件: 设置每个文件的大小,然后读取指定大小的字节就写入一个新文件,最终生成多个小文件;合并多个小文件:接...

实际工作中,有时候需要通过邮箱发送文件,但是邮箱对文件大小是有限制的,所以在发送大文件的时候,需要将大文件分割成多个小文件单独发送,接收方接收后再合并;就能实现大文件的传输,当然也适用于网络不佳的情况下,发送小文件;


这个需求,python就能干

用的了Python中 的文件读写功能!
分割大文件: 设置每个文件的大小,然后读取指定大小的字节就写入一个新文件,最终生成多个小文件;
合并多个小文件:接收端依次读取小文件,把读取到的字节按序写入一个文件,就可以完成合并。

大致的思路就是上面,不过python中现成的第三方库可以实现以上功能,不用自己写了;

实现文件分割合并的第三方库filesplit

先安装模块,安装方式推荐有很多种,推荐使用pip;

pip 是 Python 的包安装程序。其实,pip 就是 Python 标准库(The Python Standard Library)中的一个包,只是这个包比较特殊,用它可以来管理 Python 标准库(The Python Standard Library)中其他的包。pip 是一个命令行程序。 安装 pip 后,会向系统添加一个 pip 命令,该命令可以从命令提示符运行。

pip安装成功后,执行以下命令安装filesplit

pip install filesplit

在这里插入图片描述

如图提示,表示安装成功;

使用filesplit:

使用filesplit分割文件,只需要三环代码即可实现:
首先引入Split模块:传入两个参数,源文件,分割后小文件存放的目录;设置一下每个文件大小;

伪代码如下:

def splitFile(bigfile,output):
    from filesplit.split import Split
    split = Split(bigfile, output)
    split.bysize(size = 1024*1000*10) # 文件最多 10MB

使用filesplit合并文件夹里的小文件进行合并,要求文件夹内必须有 manifest 文件;有一定的格式要求; 具体可参考源码;

使用python的文件读写功能实现:

如果不想使用第三方库,也可以自己实现,也比较简单;完全按照以上的思路来做即可;以合并小文件功能为例:

实现功能的伪代码如下:

def hebing(bigfile,total_parts):
    '''
    合并小文件
    '''
    with open(bigfile,"wb") as writer:
        for part in range(total_parts):
            with open(f"{bigfile}_{part}", "rb") as reader:
                writer.write(reader.read())

总结:

一个分割合并文件的功能需求使用python实现;第三方库虽然简单,但是还是建议使用python中自有的文件读写功能;

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。