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 相关文章推荐
重命名批处理python脚本
Apr 05 Python
Python使用Flask框架获取当前查询参数的方法
Mar 21 Python
Python多线程编程(六):可重入锁RLock
Apr 05 Python
使用简单工厂模式来进行Python的设计模式编程
Mar 01 Python
Python实现的计数排序算法示例
Nov 29 Python
linecache模块加载和缓存文件内容详解
Jan 11 Python
详解Python如何生成词云的方法
Jun 01 Python
在python中利用opencv简单做图片比对的方法
Jan 24 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
Dec 12 Python
浅谈python的elementtree模块处理中文注意事项
Mar 06 Python
详解python 内存优化
Aug 17 Python
python Pexpect模块的使用
Dec 25 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中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
php使用curl访问https示例分享
2014/01/17 PHP
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
2014/07/15 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
2016/07/15 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
2019/05/13 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
2019/09/30 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
JQuery 小练习(实例代码)
2009/08/07 Javascript
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
2012/12/17 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
2020/09/18 Javascript
[01:16]2014DOTA2 TI专访C9战队EE:中国五强中会占三席
2014/07/10 DOTA
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
解决python web项目意外关闭,但占用端口的问题
2019/12/17 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
个人承诺书怎么写
2014/05/24 职场文书
2014年图书管理员工作总结
2014/12/01 职场文书
创卫工作总结2015
2015/04/22 职场文书
南京南京观后感
2015/06/02 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android