python实现大文本文件分割

时间:2021-05-22

本文实例为大家分享了python实现大文本文件分割的具体代码,供大家参考,具体内容如下

开发环境

Python 2

实现效果

通过文件拖拽或文件路径输入,实现自定义大文本文件分割。

代码实现

#coding:gbk import os,sys,shutil is_file_exits=False while not is_file_exits: files_list=[] if(len(sys.argv)==1): print('请输入要切割的文件完整路径:') files_path=raw_input().strip() for str_file_path in files_path.split(' '): if(str_file_path.strip()==''): continue if(not os.path.exists(str_file_path.strip())): print(str_file_path.strip()+'文件路径不存在,请重新输入!') is_file_exits=False break else: files_list.append(str_file_path.strip()); is_file_exits=True else: for str_file_path in sys.argv[1:len(sys.argv)]: if(str_file_path.strip()==''): continue if(not os.path.exists(str_file_path.strip())): print(str_file_path.strip()+'文件路径不存在,请重新输入!') is_file_exits=False break else: files_list.append(str_file_path.strip()); is_file_exits=True print('待切割文件:'+str(files_list)) is_continue=False while not is_continue: print('请输入要切割的文件个数:') str_files_count=raw_input() if str_files_count.isdigit(): is_continue=True else: print('请输入正确的数字!') for file_path in files_list: split_file_path='' total_lines_count=0 lines_count=0 files_count=int(str_files_count) print('正在统计文本行数.....') total_lines_count = len(open(file_path,'rU').readlines()) print('文本总行数:'+str(total_lines_count)) if files_count>total_lines_count: print('文本太小,不值得分割!') sys.exit() (filepath,filename) = os.path.split(file_path); (filepathname,extension) = os.path.splitext(file_path) if os.path.exists(filepathname): shutil.rmtree(filepathname) os.mkdir(filepathname) lines_count=int(total_lines_count/files_count) mod_count=total_lines_count%files_count print('正在进行文件分割.....') line_num=0 file_num=0 temp=-1 for line in open(file_path,'rU').readlines(): if file_num<mod_count: file_num=int(line_num/(lines_count+1)) else: file_num=int((line_num-mod_count*(lines_count+1))/lines_count+mod_count) split_file_path=filepathname+'/'+str.replace(filename,extension,'_'+str(file_num)+extension) with open(split_file_path,'a+') as split_file: split_file.write(line) if temp!=file_num: print('正在生成:'+split_file_path) temp=file_num line_num+=1 print(file_path+'分割完成!') split_file.close() os.system('pause')

源码地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章