新闻中心

Python 文件按大小切割保存的方法

2025-11-18
浏览次数:
返回列表
答案:Python可通过分块读写实现文件切割。先按指定大小(如50MB)以二进制模式读取原文件,逐段写入命名含序号的新文件(如file_part_001),确保磁盘空间充足并保留原始信息以便合并。

python 文件按大小切割保存的方法

处理大文件时,经常需要将一个大文件按指定大小切割成多个小文件,便于传输或存储。Python 提供了简单有效的方式来实现文件按大小切割保存。下面介绍具体方法。

1. 基本思路

读取原始文件,以设定的块大小(如 10MB)逐段读取内容,并写入新的分片文件中。每个分片文件命名可按序号递增,例如 file_part_001.txtfile_part_002.txt 等。

2. 实现代码示例

以下是一个通用函数,用于将任意文件按指定大小(字节)进行切割:

import os

def split_file(file_path, chunk_size_mb):
    # 转换为字节
    chunk_size = chunk_size_mb * 1024 * 1024

    # 获取文件名和目录
    dir_name = os.path.dirname(file_path)
    base_name = os.path.basename(file_path)

    # 打开原文件
    with open(file_path, 'rb') as f:
        part_num = 1
        while True:
            data = f.read(chunk_size)
            if not data:
                break  # 文件读取完毕

            # 构造分片文件名
            part_filename = f"{base_name}.part{part_num:03d}"
            part_filepath = os.path.join(dir_name, part_filename)

            # 写入分片
            with open(part_filepath, 'wb') as part_file:
                part_file.write(data)

            print(f"已生成分片: {part_filepath}, 大小: {len(data)} 字节")
            part_num += 1

    print(f"文件切割完成,共生成 {part_num - 1} 个分片。")

3. 使用方式

假设你要将当前目录下的 large_data.zip 按每份 50MB 切割:

Whimsical Whimsical

Whimsical推出的AI思维导图工具

Whimsical 182 查看详情 Whimsical
split_file('large_data.zip', chunk_size_mb=50)

执行后会生成如下文件:

  • large_data.zip.part001
  • large_data.zip.part002
  • ...

4. 注意事项

实际使用中需注意以下几点:

  • 确保磁盘有足够空间存放所有分片
  • 二进制模式('rb'/'wb')适用于所有类型文件,包括文本、压缩包、视频等
  • chunk_size_mb 设置过小会导致分片过多,影响管理
  • 建议保留原始文件名信息以便后续合并

基本上就这些。这个方法简单可靠,适合大多数场景下的文件分割需求。

以上就是Python 文件按大小切割保存的方法的详细内容,更多请关注其它相关文章!


# 解决问题  # facebook海外营销推广售价多少钱  # 山西seo优化  # 淮安seo营销推广  # 智能选题网站建设方案  # 河间网站建设制作  # 天津东丽网站建设  # 成都seo优化行业  # 莆田网站建设价位  # 大连营销推广哪家好  # 建设银行天津网站  # 几点  # python  # 中文网  # 相关文章  # 适用于  # 多个  # 大文件  # 是一个  # 如何做  # 分片  # 字节  # 文件切割 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: MAC的“快捷指令”怎么同步到iPhone_MAC利用iCloud同步所有设备的自动化指令  在J*aScript中复现SciPy的B样条拟合与求值:关键考量  c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架  C++如何检测键盘输入_C++ _kbhit与_getch函数非阻塞输入  html5 app怎么运行环境_配html5 app运行环境【教程】  淘宝网网页版登录入口 淘宝官方网页版快捷登录  Golang如何使用buffered channel提高性能_Golang buffered channel优化技巧  html怎么在cmd下运行php文件_cmd运行html中php文件方法【教程】  中兴Axon42Ultra怎样在文件App筛图_iPhone中兴Axon42Ultra文件App筛图【图片筛选】  漫蛙2网页版漫画入口 漫蛙漫画在线官方登录  PostgreSQL海量数据高效导入策略:Python与Django实践指南  单射、满射与双射的关系 一文理清所有逻辑  FullCalendar 自定义按钮样式定制指南  漫蛙2在线漫画入口 漫蛙正版漫画网页版直达  快手官方唯一登录入口 谨防山寨钓鱼网站  微信网页版官方入口直达 微信网页版网页版登录使用方法  mysql通配符支持数字匹配吗_mysql通配符能否用于数字匹配的解析  win11专注助手在哪 Win11免打扰模式设置与自动化规则【指南】  漫蛙2正版漫画站 漫蛙2网页版快速访问入口  LINUX的I/O重定向是什么_深入理解LINUX中 >、>> 与 < 的区别  知音漫客官网漫画下载_知音漫客网页版阅读记录  邮政快递包裹最新位置 邮政快递实时追踪入口  J*aScript中高效管理与清空动态列表:避免循环陷阱  汽水音乐车机版横屏版7.1 汽水音乐车机版横屏版下载入口  PS5 Pro有点优势但不多! 《燕云十六声》PS5平台与PC性能画面对比  Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践  在Runstone环境中高效处理TasteDive API的JSON数据  深入理解J*aScript中的B样条曲线与节点向量生成  CSS自定义字体样式被系统字体替换怎么办_font-face方式指定font-display控制渲染策略  mysql密码锁定怎么解锁_mysql密码锁定解锁后修改密码步骤  Django表单提交验证失败后保持字段值不刷新  c++20的std::jthread是什么_c++可中断线程与RAII式管理  《噬血代码2》新预告片发布 展示游戏剧情  2025俄罗斯Yandex最新入口 官方网站地址及浏览器下载指南  如何有效阻止外部脚本意外修改内联样式的高度属性  Python类型检查:优化关联可选属性的Mypy推断策略  163邮箱网页版入口导航平台 163邮箱网页版登录入口官网导航  Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】  向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程  Python异步编程实践:使用Binance API构建实时交易数据流  J*aScript类型检查_j*ascript代码规范  荣耀Play7TPro怎样在信息App置顶客服对话_iPhone荣耀Play7TPro信息App置顶客服对话【优先查看】  c++ 命名空间怎么用 c++ namespace使用指南  vivo手机参数配置怎么增强信号_vivo手机参数配置信号增强方法  AO3镜像入口大全 AO3网页版内容访问全集  使用J*aScript检测输入元素是否包含在特定类中  浏览器打开即用 美图秀秀网页版入口  支付宝如何管理隐私设置_支付宝隐私保护的配置技巧  如何在更新Composer依赖后自动运行测试_使用post-update-cmd钩子触发PHPUnit  电脑安装程序提示“错误1722”怎么办_Windows Installer服务问题解决【教程】 

搜索