python实现大文本文件分割


Posted in Python onJuly 22, 2019

本文实例为大家分享了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')

源码地址

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

Python 相关文章推荐
Django框架中的对象列表视图使用示例
Jul 21 Python
栈和队列数据结构的基本概念及其相关的Python实现
Aug 24 Python
在Mac OS系统上安装Python的Pillow库的教程
Nov 20 Python
Python的语言类型(详解)
Jun 24 Python
python爬虫爬取快手视频多线程下载功能
Feb 28 Python
对numpy中shape的深入理解
Jun 15 Python
详解Django中间件的5种自定义方法
Jul 26 Python
Python3.6使用tesseract-ocr的正确方法
Oct 17 Python
解决python 自动安装缺少模块的问题
Oct 22 Python
pandas dataframe的合并实现(append, merge, concat)
Jun 24 Python
python与pycharm有何区别
Jul 01 Python
python录音并调用百度语音识别接口的示例
Dec 01 Python
python plotly绘制直方图实例详解
Jul 22 #Python
python分割一个文本为多个文本的方法
Jul 22 #Python
在linux系统下安装python librtmp包的实现方法
Jul 22 #Python
django搭建项目配置环境和创建表过程详解
Jul 22 #Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 #Python
Django使用中间键实现csrf认证详解
Jul 22 #Python
python Tcp协议发送和接收信息的例子
Jul 22 #Python
You might like
德劲1103的维修打理经验
2021/03/02 无线电
用PHP代替JS玩转DOM的思路及示例代码
2014/06/15 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
2017/03/04 PHP
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
2015/04/15 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
JS实现环形进度条(从0到100%)效果
2016/07/05 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
2017/03/03 Javascript
vue2.0 资源文件assets和static的区别详解
2018/04/08 Javascript
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
2020/07/11 Javascript
[41:20]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS DK
2014/05/26 DOTA
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
Python中logging模块的用法实例
2014/09/29 Python
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
Python 3.x基于Xml数据的Http请求方法
2018/12/28 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
python根据时间获取周数代码实例
2019/09/30 Python
python 多线程中join()的作用
2020/10/29 Python
python中append函数用法讲解
2020/12/11 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
超市中秋节促销方案
2014/03/21 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
开展党的群众路线教育实践活动总结报告
2014/10/31 职场文书
2014年仓库管理工作总结
2014/12/17 职场文书
2015年八一建军节演讲稿
2015/03/19 职场文书
加薪申请报告范本
2015/05/15 职场文书
刮痧观后感
2015/06/05 职场文书
《自然之道》读后感3篇
2019/12/17 职场文书