Python用户自定义函数一个函数spiltfile,实现将一个文件分割成大小为size的块?

很多时候我们会面临大文件无法加载到内存,或者要传输大文件的问题。这时候就需要考虑将大文件分割为小文件进行处理了。下面是一种用python分割与合并分件的实现。import osFILE_DIR = os.path.dirname(os.path.abspath(__file__))#========================================================# 文件操作#========================================================def get_filelist1(dir, postfix):'''按照后缀返回文件名列表INPUT -> 目录地址, 文件后缀OUTPUT -> 文件名列表'''return [os.path.join(dir, f) for f in os.listdir(dir) if f.endswith(postfix)]def get_filelist2(dir, preffix):'''按照前缀返回文件名列表INPUT -> 目录地址, 文件前缀OUTPUT -> 文件名列表'''return [os.path.join(dir, f) for f in os.listdir(dir) if f.startswith(preffix)]def get_file_postfix(filename):'''获取文件名后缀INPUT -> 文件名OUTPUT -> 文件后缀'''file = os.path.splitext(filename)preffix, postfix = filereturn postfixdef get_file_preffix(filename):'''获取文件名前缀INPUT -> 文件名OUTPUT -> 文件前缀'''file = os.path.splitext(filename)preffix, postfix = filereturn preffixdef file_chunkspilt(path, filename, chunksize):'''文件按照数据块大小分割为多个子文件INPUT -> 文件目录, 文件名, 每个数据块大小'''if chunksize > 0:filepath = path+'/'+filenamepartnum = 0inputfile = open(filepath, 'rb')while True:chunk = inputfile.read(chunksize)if not chunk:breakpartnum += 1newfilename = os.path.join(path, (filename+'_%04d' % partnum))sub_file = open(newfilename, 'wb')sub_file.write(chunk)sub_file.close()inputfile.close()else:print('chunksize must bigger than 0!')def file_linespilt(path, filename, limit):'''文件按照行分割成多个子文件INPUT -> 文件目录, 文件名, 行数'''if limit > 0:preffix = get_file_preffix(filename)postfix = get_file_postfix(filename)file_count = 0l_list = []with open(path+'/'+filename, 'rb') as f:for line in f:l_list.append(line)if len(l_list) < limit:continuesubfile = preffix+"_"+str(file_count)+"."+postfixwith open(FILE_DIR+'/'+subfile, 'wb') as file:for l in l_list[:-1]:file.write(l)file.write(l_list[-1].strip())l_list=[]file_count += 1else:print('limit must bigger than 0!')def file_combine(path, filename):'''子文件合并INPUT -> 文件目录, 文件名'''filepath = path+'/'+filenamepartnum = 0outputfile = open(filepath, 'wb')subfile_list = get_filelist2(FILE_DIR, filename+'_')for subfile in subfile_list:temp = open(subfile, 'rb')outputfile.write(temp.read())temp.close()outputfile.close()以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。时间: 2019-07-22

我要回帖

更多关于 用户自定义函数 的文章

 

随机推荐