当前位置: 首页 > article >正文

分割 / 合并大文件的简单 python 代码

使用方法

分割: python fs.py -n <分割后的文件个数> <要分割的文件>
合并: python fs.py -m <分割文件1> <分割文件2> ...

示例

PS C:\Users\Administrator\Desktop> python fs.py
使用方法:
分割: python fs.py -n <分割后的文件个数> <要分割的文件>
合并: python fs.py -m <分割文件1> <分割文件2> ...

PS C:\Users\Administrator\Desktop> python fs.py -n 3 .\python-3.13.2-amd64.exe
文件分割完成,共生成 3 个分割文件。

PS C:\Users\Administrator\Desktop> python fs.py -m python-3.13.2-amd64.exe.01 python-3.13.2-amd64.exe.02 python-3.13.2-amd64.exe.03
文件合并完成。

源代码

import os
import sys


def split_file(file_path, num_parts):
    try:
        file_size = os.path.getsize(file_path)
        chunk_size = file_size // num_parts
        remainder = file_size % num_parts

        with open(file_path, 'rb') as file:
            for i in range(num_parts):
                part_file_name = f"{file_path}.{str(i + 1).zfill(2)}"
                with open(part_file_name, 'wb') as part_file:
                    if i < num_parts - 1:
                        part_data = file.read(chunk_size)
                    else:
                        part_data = file.read(chunk_size + remainder)
                    part_file.write(part_data)
        print(f"文件分割完成,共生成 {num_parts} 个分割文件。")
    except Exception as e:
        print(f"文件分割出错: {e}")


def merge_files(part_files, output_file):
    try:
        with open(output_file, 'wb') as output:
            for part_file in sorted(part_files):
                if os.path.exists(part_file):
                    with open(part_file, 'rb') as part:
                        output.write(part.read())
                    # 删除分割文件
                    os.remove(part_file)
        print("文件合并完成。")
    except Exception as e:
        print(f"文件合并出错: {e}")


if __name__ == "__main__":
    if len(sys.argv) < 3:
        print("使用方法:")
        print("分割: python fs.py -n <分割后的文件个数> <要分割的文件>")
        print("合并: python fs.py -m <分割文件1> <分割文件2> ...")
        sys.exit(1)

    if sys.argv[1] == '-n':
        if len(sys.argv) != 4:
            print("分割命令参数错误,正确格式: python fs.py -n <分割后的文件个数> <要分割的文件>")
            sys.exit(1)
        try:
            num_parts = int(sys.argv[2])
            file_to_split = sys.argv[3]
            split_file(file_to_split, num_parts)
        except ValueError:
            print("分割后的文件个数必须是整数。")
    elif sys.argv[1] == '-m':
        part_files = sys.argv[2:]
        if not part_files:
            print("合并命令缺少分割文件参数。")
            sys.exit(1)
        output_file = '.'.join(part_files[0].split('.')[:-1])
        merge_files(part_files, output_file)
    else:
        print("未知参数,请使用 -n 进行分割,-m 进行合并。")

http://www.kler.cn/a/611844.html

相关文章:

  • 【Mysql】SQL 优化全解析
  • 第十二篇《火攻篇》:一把火背后的战争哲学与生存智慧
  • 前端工程化开篇
  • 后端学习day1-Spring(八股)--还剩9个没看
  • C语言文件操作简介:从文件打开到文件读写
  • Ae 效果详解:3D 点控制
  • AWS CloudWatch 实战:构建智能监控与自动化运维体系
  • 华为OD机试2025A卷 - 流浪地球(Java Python JS C++ C )
  • MOSN(Modular Open Smart Network)是一款主要使用 Go 语言开发的云原生网络代理平台
  • Appium中元素定位之一组元素定位API
  • 蓝桥杯备考:真题之飞机降落(暴搜+小贪心)
  • Flutter 完整开发指南
  • 系统调用 与 中断
  • Transformer | 一文了解:缩放、批量、多头、掩码、交叉注意力机制(Attention)
  • DMA 之FIFO的作用
  • .NET开源的智能体相关项目推荐
  • c#的反射和特性
  • Docker实现MySQL主从复制配置【简易版】
  • 旅游纵览杂志旅游纵览杂志社旅游纵览编辑部2025年第2期目录
  • 微服务与分布式系统