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 26 Python
基于python select.select模块通信的实例讲解
Sep 21 Python
python处理csv中的空值方法
Jun 22 Python
pandas 将list切分后存入DataFrame中的实例
Jul 03 Python
linux安装Python3.4.2的操作方法
Sep 28 Python
Python操作json的方法实例分析
Dec 06 Python
Python中shapefile转换geojson的示例
Jan 03 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
使用Python实现文字转语音并生成wav文件的例子
Aug 08 Python
python实现银行实战系统
Feb 26 Python
Python基于network模块制作电影人物关系图
Jun 19 Python
selenium+python实现基本自动化测试的示例代码
Jan 27 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获取网卡地址的代码
2008/04/09 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
2012/11/07 PHP
Yii编程开发常见调用技巧集锦
2016/07/15 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
PHP连接MySQL数据库并以json格式输出
2018/05/21 PHP
PHP 构造函数和析构函数原理与用法分析
2020/04/21 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
在js中使用"with"语句中跨frame的变量引用问题
2007/03/08 Javascript
学习YUI.Ext 第七天--关于View&JSONView
2007/03/10 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
JS使用ajax方法获取指定url的head信息中指定字段值的方法
2015/03/24 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
Bootstrap table简单使用总结
2017/02/15 Javascript
微信小程序之发送短信倒计时功能
2017/08/30 Javascript
Vue源码探究之状态初始化
2018/11/14 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
2019/05/12 Javascript
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python 中 Meta Classes详解
2016/02/13 Python
python实现矩阵打印
2019/03/02 Python
Python向excel中写入数据的方法
2019/05/05 Python
Python中关于浮点数的冷知识
2019/09/22 Python
django教程如何自学
2020/07/31 Python
python实现按日期归档文件
2021/01/30 Python
澳大利亚个性化儿童礼品网站:Bright Star Kids
2019/06/14 全球购物
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
如何理解委托
2012/01/06 面试题
在校生党员自我评价
2013/09/25 职场文书
致短跑运动员广播稿
2014/01/09 职场文书
我的大学生活演讲稿
2014/04/25 职场文书
市级优秀班主任事迹材料
2014/05/13 职场文书
上党课的心得体会
2014/09/02 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
高三语文复习计划
2015/01/19 职场文书
Java 中的 Lambda List 转 Map 的多种方法详解
2022/07/07 Java/Android