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 相关文章推荐
简明 Python 基础学习教程
Feb 08 Python
Python中用于返回绝对值的abs()方法
May 14 Python
python之从文件读取数据到list的实例讲解
Apr 19 Python
python学生信息管理系统(初级版)
Oct 17 Python
python实现基于朴素贝叶斯的垃圾分类算法
Jul 09 Python
解决Django中调用keras的模型出现的问题
Aug 07 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
Mar 24 Python
python实现图像全景拼接
Mar 27 Python
浅谈python多线程和多线程变量共享问题介绍
Apr 17 Python
python小程序之4名牌手洗牌发牌问题解析
May 15 Python
DataFrame 数据合并实现(merge,join,concat)
Jun 14 Python
教你怎么用Python实现多路径迷宫
Apr 29 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
PHP操作Memcache实例介绍
2013/06/14 PHP
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
php编写的简单页面跳转功能实现代码
2013/11/27 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
2015/03/18 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
JavaScript 实现类的多种方法实例
2013/05/01 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
2016/04/26 Javascript
jQuery提示插件qTip2用法分析(支持ajax及多种样式)
2016/06/08 Javascript
微信小程序-详解数据缓存
2016/11/24 Javascript
Vue form 表单提交+ajax异步请求+分页效果
2017/04/22 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
微信小程序checkbox组件使用详解
2018/01/31 Javascript
vue draggable resizable gorkys与v-chart使用与总结
2019/09/05 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
2020/07/15 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
在python里面运用多继承方法详解
2019/07/01 Python
详解python中eval函数的作用
2019/10/22 Python
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
美国家具网站:Cymax
2016/09/17 全球购物
女大学生自我鉴定
2013/12/09 职场文书
护士岗前培训自我评鉴
2014/02/28 职场文书
土木工程师职业规划范文
2014/03/07 职场文书
创业培训计划书
2014/05/03 职场文书
师德师风自查总结
2014/10/14 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
企业安全生产规章制度
2015/08/06 职场文书
你真的了解redis为什么要提供pipeline功能
2021/06/22 Redis
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android