python实现大文件分割与合并

 更新时间:2019年07月22日 10:22:15   作者:Byte猫  
这篇文章主要为大家详细介绍了python实现大文件分割与合并,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

下面是一种用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中文乱码问题方法总结

    这篇文章主要介绍了解决python中文乱码问题方法总结,需要的朋友可以参考下
    2021-05-05
  • 详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式

    详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式

    这篇文章主要介绍了详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Python实现身份证号码解析

    Python实现身份证号码解析

    本文给大家汇总介绍下使用Python实现身份证号码验证解析的几个方法,有需要的小伙伴可以参考下。
    2015-09-09
  • python 自动化将markdown文件转成html文件的方法

    python 自动化将markdown文件转成html文件的方法

    这篇文章主要介绍了python 自动化将markdown文件转成html文件的方法的相关资料,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • Python如何提取Word文档中的超链接

    Python如何提取Word文档中的超链接

    在数字化办公场景中,Word文档作为承载结构化信息的重要载体,常包含大量嵌入的超链接以关联外部资源或实现内容交互,下面我们看看如何使用Python实现批量提取这些超链接吧
    2025-03-03
  • python smtplib发送带附件邮件小程序

    python smtplib发送带附件邮件小程序

    这篇文章主要为大家详细介绍了python smtplib发送带附件邮件小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • 9个提高 Python 编程的小技巧

    9个提高 Python 编程的小技巧

    这篇文章主要介绍了9个提高 Python 编程的小技巧,下文分享python编程技巧,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-05-05
  • pyqt5实现俄罗斯方块游戏

    pyqt5实现俄罗斯方块游戏

    这篇文章主要介绍了pyqt5实现俄罗斯方块游戏,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Numpy中np.vstack() 和 np.hstack() 的实现

    Numpy中np.vstack() 和 np.hstack() 的实现

    本文主要介绍了Numpy中np.vstack()和np.hstack()的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-04-04
  • Python新手入门之单引号、双引号与三引号的差异与应用示例

    Python新手入门之单引号、双引号与三引号的差异与应用示例

    在Python当中表达字符串既可以使用单引号,也可以使用双引号,那两者有什么区别吗?下面这篇文章主要给大家介绍了关于Python新手入门之单引号、双引号与三引号的差异与应用示例,需要的朋友可以参考下
    2024-03-03

最新评论