python实现按行切分文本文件的方法


Posted in Python onApril 18, 2016

本文实例讲述了python实现按行切分文本文件的方法。分享给大家供大家参考,具体如下:

python脚本利用shell命令来实现文本的操作, 这些命令大大减少了我们的代码量。

比如按行切分文件并返回切分后得到的文件列表,可以利用内建的split命令进行切分。为了返回得到的文件列表名,可以先将文件切分到自建的子目录中,然后通过os.listdir获取所有文件,再将这些文件移到上一级目录(即函数参数指定的新目录),删除自建子目录,最后返回该文件名列表。

代码如下,如发现问题欢迎指正:

# 创建新路径
def make_dirs(path):
  if not os.path.isdir(path):
    os.makedirs(path)
# 获取文件的行数
def get_total_lines(file_path):
  if not os.path.exists(file_path):
    return 0
  cmd = 'wc -l %s' % file_path
  return int(os.popen(cmd).read().split()[0])
# 函数split_file_by_row: 按行切分文件
# filepath: 切分的目标文件
# new_filepath: 生成新文件的路径
# row_cnt: 每个文件最多包含几行
# suffix_type: 新文件后缀类型,如两位字母或数字
# return: 切分后的文件列表
def split_file_by_row(filepath, new_filepath, row_cnt, suffix_type='-d'):
  tmp_dir = "/split_file_by_row/"
  make_dirs(new_filepath)
  make_dirs(new_filepath+tmp_dir)
  total_rows = get_total_lines(filepath)
  file_cnt = int(math.ceil(total_rows*1.0/row_cnt))
    command = "split -l%d -a2 %s %s %s" % (row_cnt, suffix_type, filepath, new_filepath+tmp_dir)
    os.system(command)
    filelist = os.listdir(new_filepath+tmp_dir)
  command = "mv %s/* %s"%(new_filepath+tmp_dir, new_filepath)
  os.system(command)
  command = "rm -r %s"%(new_filepath+tmp_dir)
  os.system(command)
  return [new_filepath+fn for fn in filelist]

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
linux环境下安装pyramid和新建项目的步骤
Nov 27 Python
python服务器与android客户端socket通信实例
Nov 12 Python
利用Python演示数型数据结构的教程
Apr 03 Python
Python的Django框架安装全攻略
Jul 15 Python
遗传算法之Python实现代码
Oct 10 Python
Python读csv文件去掉一列后再写入新的文件实例
Dec 28 Python
在Python中如何传递任意数量的实参的示例代码
Mar 21 Python
浅谈PySpark SQL 相关知识介绍
Jun 14 Python
12个Python程序员面试必备问题与答案(小结)
Jun 24 Python
python3 pathlib库Path类方法总结
Dec 26 Python
python实现飞机大战游戏(pygame版)
Oct 26 Python
python3中celery异步框架简单使用+守护进程方式启动
Jan 20 Python
Python获取linux主机ip的简单实现方法
Apr 18 #Python
Python实现递归遍历文件夹并删除文件
Apr 18 #Python
Python简单实现TCP包发送十六进制数据的方法
Apr 16 #Python
Python出现segfault错误解决方法
Apr 16 #Python
Python判断值是否在list或set中的性能对比分析
Apr 16 #Python
python中zip()方法应用实例分析
Apr 16 #Python
Python使用logging结合decorator模式实现优化日志输出的方法
Apr 16 #Python
You might like
PHP函数超时处理方法
2016/02/14 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
一个关于jqGrid使用的小例子(行按钮)
2011/11/04 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
vue.js+element-ui动态配置菜单的实例
2018/09/07 Javascript
在Vue 中实现循环渲染多个相同echarts图表
2020/07/20 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
python网络编程实例简析
2014/09/26 Python
python远程连接服务器MySQL数据库
2018/07/02 Python
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
2016/04/26 HTML / CSS
英国领先的运动物理治疗供应公司:Vivomed
2018/07/14 全球购物
长辈证婚人证婚词
2014/01/09 职场文书
施工材料员岗位职责
2014/02/12 职场文书
法人授权委托书
2014/04/03 职场文书
体操比赛口号
2014/06/10 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
python爬虫--selenium模块
2021/03/31 Python
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang
JS中一些高效的魔法运算符总结
2021/05/06 Javascript
解决MultipartFile.transferTo(dest) 报FileNotFoundExcep的问题
2021/07/01 Java/Android