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开发编码规范
Sep 08 Python
python 中文乱码问题深入分析
Mar 13 Python
python生成器的使用方法
Nov 21 Python
python将控制台输出保存至文件的方法
Jan 07 Python
python使用requests模块实现爬取电影天堂最新电影信息
Apr 03 Python
NumPy 基本切片和索引的具体使用方法
Apr 24 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 Python
Django用数据库表反向生成models类知识点详解
Mar 25 Python
使用python将微信image下.dat文件解密为.png的方法
Nov 30 Python
python subprocess pipe 实时输出日志的操作
Dec 05 Python
python实现图片转字符画的完整代码
Feb 21 Python
python操作xlsx格式文件并读取
Jun 02 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
一首老MP3,致敬WAR3经典
2021/03/08 魔兽争霸
PHP初学者头疼问题总结
2006/07/08 PHP
PHP函数in_array()使用详解
2014/08/20 PHP
浅析PHP中Session可能会引起并发问题
2015/07/23 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
PHP数据库处理封装类实例
2016/12/24 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
jQuery设计思想
2017/03/07 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
详解ECMAScript6入门--Class对象
2017/04/27 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
jQuery选择器之属性筛选选择器用法详解
2017/09/19 jQuery
nodejs acl的用户权限管理详解
2018/03/14 NodeJs
vue实现一个炫酷的日历组件
2018/10/08 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
微信小程序 冒泡事件原理解析
2019/09/27 Javascript
Node.js API详解之 string_decoder用法实例分析
2020/04/29 Javascript
python+mysql实现简单的web程序
2014/09/11 Python
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
python线程池 ThreadPoolExecutor 的用法示例
2020/10/10 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
阿根廷在线宠物商店:Puppis
2018/03/23 全球购物
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
职业生涯规划书前言
2014/04/15 职场文书
团代会邀请函
2015/02/02 职场文书
2015年事业单位工作总结
2015/04/27 职场文书
护士岗位竞聘书
2015/09/15 职场文书