python实现大文件分割与合并
很多时候我们会面临大文件无法加载到内存,或者要传输大文件的问题。这时候就需要考虑将大文件分割为小文件进行处理了。
下面是一种用python分割与合并分件的实现。
importos
FILE_DIR=os.path.dirname(os.path.abspath(__file__))
#========================================================
#文件操作
#========================================================
defget_filelist1(dir,postfix):
'''
按照后缀返回文件名列表
INPUT->目录地址,文件后缀
OUTPUT->文件名列表
'''
return[os.path.join(dir,f)forfinos.listdir(dir)iff.endswith(postfix)]
defget_filelist2(dir,preffix):
'''
按照前缀返回文件名列表
INPUT->目录地址,文件前缀
OUTPUT->文件名列表
'''
return[os.path.join(dir,f)forfinos.listdir(dir)iff.startswith(preffix)]
defget_file_postfix(filename):
'''
获取文件名后缀
INPUT->文件名
OUTPUT->文件后缀
'''
file=os.path.splitext(filename)
preffix,postfix=file
returnpostfix
defget_file_preffix(filename):
'''
获取文件名前缀
INPUT->文件名
OUTPUT->文件前缀
'''
file=os.path.splitext(filename)
preffix,postfix=file
returnpreffix
deffile_chunkspilt(path,filename,chunksize):
'''
文件按照数据块大小分割为多个子文件
INPUT->文件目录,文件名,每个数据块大小
'''
ifchunksize>0:
filepath=path+'/'+filename
partnum=0
inputfile=open(filepath,'rb')
whileTrue:
chunk=inputfile.read(chunksize)
ifnotchunk:
break
partnum+=1
newfilename=os.path.join(path,(filename+'_%04d'%partnum))
sub_file=open(newfilename,'wb')
sub_file.write(chunk)
sub_file.close()
inputfile.close()
else:
print('chunksizemustbiggerthan0!')
deffile_linespilt(path,filename,limit):
'''
文件按照行分割成多个子文件
INPUT->文件目录,文件名,行数
'''
iflimit>0:
preffix=get_file_preffix(filename)
postfix=get_file_postfix(filename)
file_count=0
l_list=[]
withopen(path+'/'+filename,'rb')asf:
forlineinf:
l_list.append(line)
iflen(l_list)文件目录,文件名
'''
filepath=path+'/'+filename
partnum=0
outputfile=open(filepath,'wb')
subfile_list=get_filelist2(FILE_DIR,filename+'_')
forsubfileinsubfile_list:
temp=open(subfile,'rb')
outputfile.write(temp.read())
temp.close()
outputfile.close()
 
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。