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实现斐波那契递归函数的方法
Sep 08 Python
python格式化字符串实例总结
Sep 28 Python
Python做文本按行去重的实现方法
Oct 19 Python
python爬虫headers设置后无效的解决方法
Oct 21 Python
Python中常见的异常总结
Feb 20 Python
pandas 数据索引与选取的实现方法
Jun 21 Python
Python3+Selenium+Chrome实现自动填写WPS表单
Feb 12 Python
Selenium启动Chrome时配置选项详解
Mar 18 Python
解析Tensorflow之MNIST的使用
Jun 30 Python
Python实战之OpenCV实现猫脸检测
Jun 26 Python
python自动化操作之动态验证码、滑动验证码的降噪和识别
Aug 30 Python
Python+Pillow+Pytesseract实现验证码识别
May 11 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
很温暖很温暖的Lester Young
2021/03/03 冲泡冲煮
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
WordPress中查询文章的循环Loop结构及用法分析
2015/12/17 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
在html页面上拖放移动标签
2010/01/08 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
2014/04/08 Javascript
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
很棒的一组js图片轮播特效
2017/01/12 Javascript
jQuery.Ajax()的data参数类型详解
2017/07/23 jQuery
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
jQuery实现table表格信息的展开和缩小功能示例
2018/07/21 jQuery
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
Python实现读取txt文件并转换为excel的方法示例
2018/05/17 Python
Python 访问限制 private public的详细介绍
2018/10/16 Python
python儿童学游戏编程知识点总结
2019/06/03 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
2019/10/23 Python
使用css3 属性如何丰富图片样式(圆角 阴影 渐变)
2012/11/22 HTML / CSS
北大自主招生自荐信
2013/10/19 职场文书
公司经理聘任书
2014/03/29 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
学校文明单位申报材料
2014/05/06 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
九一八事变纪念日演讲稿
2014/09/14 职场文书
2015年测量员工作总结
2015/05/23 职场文书
中学图书馆工作总结
2015/08/11 职场文书
Go语言设计模式之结构型模式
2021/06/22 Golang