python实现大文件分割与合并


Posted in Python onJuly 22, 2019

很多时候我们会面临大文件无法加载到内存,或者要传输大文件的问题。这时候就需要考虑将大文件分割为小文件进行处理了。

下面是一种用python分割与合并分件的实现。

import os
FILE_DIR = os.path.dirname(os.path.abspath(__file__))

#========================================================
# 文件操作
#========================================================
def get_filelist1(dir, postfix):
  '''
  按照后缀返回文件名列表
  INPUT -> 目录地址, 文件后缀
  OUTPUT -> 文件名列表
  '''
  return [os.path.join(dir, f) for f in os.listdir(dir) if f.endswith(postfix)]

def get_filelist2(dir, preffix):
  '''
  按照前缀返回文件名列表
  INPUT -> 目录地址, 文件前缀
  OUTPUT -> 文件名列表
  '''
  return [os.path.join(dir, f) for f in os.listdir(dir) if f.startswith(preffix)]

def get_file_postfix(filename):
  '''
  获取文件名后缀
  INPUT -> 文件名
  OUTPUT -> 文件后缀
  '''
  file = os.path.splitext(filename)
  preffix, postfix = file
  return postfix

def get_file_preffix(filename):
  '''
  获取文件名前缀
  INPUT -> 文件名
  OUTPUT -> 文件前缀
  '''
  file = os.path.splitext(filename)
  preffix, postfix = file
  return preffix

def file_chunkspilt(path, filename, chunksize):
  '''
  文件按照数据块大小分割为多个子文件
  INPUT -> 文件目录, 文件名, 每个数据块大小
  '''
  if chunksize > 0:
    filepath = path+'/'+filename
    partnum = 0
    inputfile = open(filepath, 'rb')
    while True:
      chunk = inputfile.read(chunksize)
      if not chunk:
        break
      partnum += 1
      newfilename = os.path.join(path, (filename+'_%04d' % partnum))
      sub_file = open(newfilename, 'wb')
      sub_file.write(chunk)
      sub_file.close()
    inputfile.close()
  else:
    print('chunksize must bigger than 0!')

def file_linespilt(path, filename, limit):
  '''
  文件按照行分割成多个子文件
  INPUT -> 文件目录, 文件名, 行数
  '''
  if limit > 0:
    preffix = get_file_preffix(filename)
    postfix = get_file_postfix(filename)
    file_count = 0
    l_list = []
    with open(path+'/'+filename, 'rb') as f:
      for line in f:
        l_list.append(line)
        if len(l_list) < limit:
          continue
        subfile = preffix+"_"+str(file_count)+"."+postfix
        with open(FILE_DIR+'/'+subfile, 'wb') as file:
          for l in l_list[:-1]:
            file.write(l)
          file.write(l_list[-1].strip())
          l_list=[]
          file_count += 1
  else:
    print('limit must bigger than 0!')

def file_combine(path, filename):
  '''
  子文件合并
  INPUT -> 文件目录, 文件名
  '''
  filepath = path+'/'+filename
  partnum = 0
  outputfile = open(filepath, 'wb')
  subfile_list = get_filelist2(FILE_DIR, filename+'_')
  for subfile in subfile_list:
    temp = open(subfile, 'rb')
    outputfile.write(temp.read())
    temp.close()
  outputfile.close()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python编写提取日志中的中文的脚本的方法
Apr 30 Python
Python numpy生成矩阵、串联矩阵代码分享
Dec 04 Python
Numpy中的mask的使用
Jul 21 Python
Python脚本利用adb进行手机控制的方法
Jul 08 Python
Django model select的多种用法详解
Jul 16 Python
TensorFlow实现简单的CNN的方法
Jul 18 Python
WxPython实现无边框界面
Nov 18 Python
opencv resize图片为正方形尺寸的实现方法
Dec 26 Python
python常用运维脚本实例小结
Feb 14 Python
解决使用python print打印函数返回值多一个None的问题
Apr 09 Python
浅谈python多线程和多线程变量共享问题介绍
Apr 17 Python
Pytorch 使用 nii数据做输入数据的操作
May 26 Python
cProfile Python性能分析工具使用详解
Jul 22 #Python
python实现大文本文件分割
Jul 22 #Python
python plotly绘制直方图实例详解
Jul 22 #Python
python分割一个文本为多个文本的方法
Jul 22 #Python
在linux系统下安装python librtmp包的实现方法
Jul 22 #Python
django搭建项目配置环境和创建表过程详解
Jul 22 #Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 #Python
You might like
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
PHP实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
JS实现上下左右对称的九九乘法表
2016/02/22 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
Vue精简版风格指南(推荐)
2018/01/30 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
9种方法优化jQuery代码详解
2020/02/04 jQuery
更改Python命令行交互提示符的方法
2015/01/14 Python
Python实现HTTP协议下的文件下载方法总结
2016/04/20 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
Python用csv写入文件_消除空余行的方法
2018/07/06 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
python交易记录链的实现过程详解
2019/07/03 Python
Python并发concurrent.futures和asyncio实例
2020/05/04 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
eBay奥地利站:eBay.at
2019/07/24 全球购物
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
中职应届生会计求职信
2013/10/23 职场文书
总监职责范文
2013/11/09 职场文书
公司市场部岗位职责
2013/12/02 职场文书
优秀求职自荐信怎样写
2013/12/18 职场文书
建筑项目策划书
2014/01/13 职场文书
《黄河颂》教学反思
2014/02/07 职场文书
交通安全标语
2014/06/06 职场文书
事业单位财务人员岗位职责
2015/04/14 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL