python实现大文本文件分割
人气:0开发环境
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')
源码地址
您可能感兴趣的文章:
加载全部内容