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 相关文章推荐
利用Django-environ如何区分不同环境
Aug 26 Python
在Python中定义一个常量的方法
Nov 10 Python
Python替换月份为英文缩写的实现方法
Jul 15 Python
python被修饰的函数消失问题解决(基于wraps函数)
Nov 04 Python
在Pytorch中计算自己模型的FLOPs方式
Dec 30 Python
python 微信好友特征数据分析及可视化
Jan 07 Python
python中如何使用insert函数
Jan 09 Python
PyCharm刷新项目(文件)目录的实现
Feb 14 Python
20行Python代码实现视频字符化功能
Apr 13 Python
Python 通过监听端口实现唯一脚本运行方式
May 05 Python
使用Keras实现简单线性回归模型操作
Jun 12 Python
我对PyTorch dataloader里的shuffle=True的理解
May 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
在PWS上安装PHP4.0正式版
2006/10/09 PHP
phpmyadmin的#1251问题
2006/11/25 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
php实现的验证码文件类实例
2015/06/18 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
2017/02/15 PHP
js window.event对象详尽解析
2009/02/17 Javascript
在linux中使用包管理器安装node.js
2015/03/13 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
Javascript之BOM(window对象)详解
2016/05/25 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
浅谈js中function的参数默认值
2017/02/20 Javascript
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
ssh批量登录并执行命令的python实现代码
2012/05/25 Python
python中执行shell的两种方法总结
2017/01/10 Python
Python建立Map写Excel表实例解析
2018/01/17 Python
Python装饰器用法示例小结
2018/02/11 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
python实现二维插值的三维显示
2018/12/17 Python
关于python多重赋值的小问题
2019/04/17 Python
利用Python计算KS的实例详解
2020/03/03 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
Python Flask框架实现简单加法工具过程解析
2020/06/03 Python
神经网络训练采用gpu设置的方式
2021/03/03 Python
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
澳大利亚当地社区首选的光学商店:1001 Optical
2019/08/24 全球购物
.NET程序员的几道面试题
2012/06/01 面试题
STP协议的主要用途是什么?为什么要用STP
2012/12/20 面试题
怎么写好自荐信
2013/10/30 职场文书
文史专业毕业生自荐信
2013/11/17 职场文书
婚礼证婚人证婚词
2014/01/13 职场文书