当前位置: 首页 > 科技观察

本文教大家如何使用Python拆分合并大文件

时间:2023-03-20 01:05:25 科技观察

有时候,我们需要给别人发送一个大文件,但是受限于传输通道的限制,比如文件大小的限制邮箱附件,或者网络条件不好,需要将大文件发给他人。文件被分成小文件,多次发送,接收端合并这些小文件。今天分享一下用Python拆分合并大文件的方法。思路与实现如果是文本文件,可以按行数进行分割。无论是文本文件还是二进制文件,都可以按照指定的大小进行分割。利用Python的文件读写函数可以实现文件的切分和合并,设置每个文件的大小,然后读取指定大小的字节写一个新的文件,接收端依次读取小文件,读到的字节是按顺序写入文件,合并即可完成。拆分大小=1024*1000*10#10MBwithopen("bigfile","rb")asreader:part=1whileTrue:part_content=reader.read(size)ifnotpart_content:print("splitdone.")breakwithopen(f"bigfile_part{part}","wb")aswriter:writer.write(part_content)mergetotal_parts=5withopen("bigfile","wb")aswriter:foriinrange(5):withopen(f"bigfile_part{i}","rb")asreader:writer.write(reader.read())虽然可以用第三方库自己写,但是别人写好了,何乐而不为一些时间并直接使用它??直接pip安装即可:pipinstallfilesplitsplitfromfilesplit.splitimportSplitsplit=Split("./data.rar","./output")split.bysize(size=1024*1000*10)#每个文件后最多执行10MB,我们可以在输出文件夹中看到拆分文件:也可以根据文件行数拆分:split.bylinecount(linecount=10000)#每个文件最多可以有10000行。该工具要求文件夹中必须有manifest文件,其格式如下:filename,filesize,headerdata_1.rar,10000000,Falsedata_2.rar,10000000,Falsedata_3.rar,10000000,Falsedata_4.rar,10000000,Falsedata_5.rar,1304145、False合并文件的代码只需要指定要合并的目录、目标目录和合并文件的名称即可。代码如下:fromfilesplit.mergeimportMergemerge=Merge(inputdir="./output",outputdir="./merge",outputfilename="merged.rar")merge.merge()执行后,可以查看合并目录中的合并文件: