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 相关文章推荐
pygame播放音乐的方法
May 19 Python
在Django的模型和公用函数中使用惰性翻译对象
Jul 27 Python
对pandas中apply函数的用法详解
Apr 10 Python
django manage.py扩展自定义命令方法
May 27 Python
python将回车作为输入内容的实例
Jun 23 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
Oct 11 Python
对Python subprocess.Popen子进程管道阻塞详解
Oct 29 Python
python实现二维数组的对角线遍历
Mar 02 Python
浅析pandas 数据结构中的DataFrame
Oct 12 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
Feb 12 Python
python两种注释用法的示例
Oct 09 Python
Python中的套接字编程是什么?
Jun 21 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中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
基于php伪静态的实现详细介绍
2013/04/28 PHP
php 注册时输入信息验证器的实现详解
2013/07/05 PHP
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
PHP 的比较运算与逻辑运算详解
2016/05/12 PHP
php微信开发自定义菜单
2016/08/27 PHP
PHP实现递归的三种方法
2020/07/04 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
js中setTimeout()与clearTimeout()用法实例浅析
2015/05/12 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
基于JQuery实现图片上传预览与删除操作
2016/05/24 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
React Native中的RefreshContorl下拉刷新使用
2017/10/09 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
2020/01/17 Javascript
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
python设置检查点简单实现代码
2014/07/01 Python
python实现梯度下降算法
2020/03/24 Python
Python爬虫实战之12306抢票开源
2019/01/24 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
keras 指定程序在某块卡上训练实例
2020/06/22 Python
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
建筑工程专业学生的自我评价
2013/12/25 职场文书
幼儿园小班教学反思
2014/02/02 职场文书
青年文明号创建承诺
2014/03/31 职场文书
学校志愿者活动总结
2014/06/27 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
安全月宣传标语
2014/10/07 职场文书
结婚喜宴迎宾词
2015/08/10 职场文书
初中信息技术教学反思
2016/02/16 职场文书
AJAX学习笔记
2021/05/18 Javascript
详细聊聊关于Mysql联合查询的那些事儿
2021/10/24 MySQL
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS