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