Python二进制方式切分文件并还原

利用Python轻松实现视频合成! 当你用 MoviePy 的力量,轻松地将多个视频合并成一个!在这篇博客文章中,你将学习如何将一个小视频合并到一个较大的视频中,并将其放置在右上角。你还将学习如何剪辑视频片段,以创建一个更无缝的最终产品。本指南提供了逐步说明和有用的视觉效果,让你很快就能制作出专业品质的视频!💻🎥💡 阅读详情

Python二进制方式均等切分文件并且合并还原

场景

  • 文件传输大小限制时,需要将文件切小,分别发送,合并还原
  • 文件发送限制(比如:破解软件、小电影…)

切分原理图

代码实现

切分方式(图左)

# 源文件名
SOURCE = 'scala-intellij-bin-2020.3.1.zip'
# 切成多少个文件,奇数
N = 9
# 还原文件的路径
restore = 'restore_' + SOURCE


def rb(abs_path):
    """二进制方式读取文件"""
    with open(abs_path, 'rb') as f:
        return f.read()


def wb(abs_path, s):
    """二进制方式写文件"""
    with open(abs_path, 'wb') as f:
        f.write(s)


def split():
    """文件切分"""
    frb = rb(SOURCE)
    each = int(len(frb) // N) + 1
    for i in range(N):
        wb(str(i), frb[i * each: (i + 1) * each])


def combine():
    """合并分片,还原文件"""
    with open(restore, 'wb') as f:
        for i in range(N):
            f.write(rb(str(i)))


if __name__ == '__main__':
    split()
    combine()

切分方式(图右)

import os

# 源文件名
SOURCE = '待切文件'
# 切成多少个文件,奇数
N = 9

# 路径设置
path = os.path.dirname(__file__)
# 源文件绝对路径
source = os.path.join(path, SOURCE)
# 源文件切分后,存到此文件夹
fragment = os.path.join(path, 'fragment/')
if not os.path.exists(fragment):
    os.mkdir(fragment)
# 还原文件的绝对路径
restore = os.path.join(fragment, SOURCE)


def rb(abs_path):
    """二进制方式读取文件"""
    with open(abs_path, 'rb') as f:
        return f.read()


def split():
    """文件切分"""
    frb = rb(source)
    f_ls = [open(os.path.join(fragment, str(i)), 'wb') for i in range(N)]
    for i in range(len(frb)):
        if i % 2 == 0:
            f_ls[i % N].write(frb[i: i + 2])
    for f in f_ls:
        f.close()


def combine():
    """合并分片,还原文件"""
    f = open(restore, 'wb')
    fb_ls = [rb(os.path.join(fragment, str(i))) for i in range(N)]
    le = sum(len(frb) for frb in fb_ls)
    for i in range(le):
        if i % 2 == 0:
            f.write(fb_ls[i % N][int(((i / 2) // N) * 2): int(((i / 2) // N) * 2) + 2])
    f.close()


def checkout():
    """计算还原率"""
    o = rb(source)
    t = sum(i == j for i, j in zip(rb(restore), o))
    print('还原率', t / len(o))


if __name__ == '__main__':
    split()
    combine()
    checkout()
6.python学习笔记:切分大型文件 大型文件的切分在shell编程中有一组操作可以切分和合并大型文件,解决了因存储过小而不能在一个设备中存储的尴尬,命令是:切分: split -b 5m redhat6.5.iso redhat-b 指定了每块子文件的大小 (适用于二进制文件 -l 指定了每个子文件的行数(适用于文本文件)合并:cat redhat* > redhat6.5.iso如果你对shell 自带的切分合并操作 阅读详情

相关推荐

Python Cookbook-2.1 读取文件

文件中读取文本或数据。

weixin_52297428的博客 776

python 二进制文件合并,将整个二进制文件读入Python

I need to import a binary file from Python -- the contents are signed 16-bit integers, big endian.The following Stack Overflow questions suggest how to pull in several bytes at a time, but is this the...

weixin_39593460的博客 346

二进制文件分割工具_BinPartition_sln.rar(附源码)

采用VS2010创建工程,可以将一个.bin文件分割多个小的.bin文件,每个小文件,存储在tempDir文件夹下,名称从BinSlice0.bin开始一直到BinSliceX.bin,每个小文件大小默认设置为32KB。如需设置为其它长度,可以修改main.c文件中的SRAM_SIZE宏参数。

python爬取视频网站m3u8视频,下载.ts后缀文件,合并成整视频

最近发现一些网站,可以解析各大视频网站的vip。仔细想了想,这也算是爬虫呀,爬的是视频数据。 首先选取一个视频网站,我选的是影视大全,然后选择上映不久的电影 “一出好戏” 。 分析页面 我用的是chrome浏览器,F12进入查看。选择NetWork的Doc,发现主体部分的数据是从这个网站获取的。 在地址栏输入这个链接,跳转到了视频来源的播放页面。 当然,在这个页...

weixin_30343157的博客 4127

二进制文件-切割-小工具

将任意指定的文件,以二进制的方式,指定区间进行切割。 可以将HTTP的请求图片、视频导出 可以去除文本文件BOM头 可以提取文件中间的乱码字节

二进制文件拆分器,对几个二进制直接合并的文件进行拆分

几个二进制直接合并的文件(比如jpg png 图片等,必须含有文件头标志),可以通过它来进行拆分 使用方法是通过修改它的资源,在其中设置好要拆分的文件头标志(字符串格式的16进制),比如jpg的文件头标志是FFD8FFE000104A464946(转换为字符串就是??????JFIF),而png可设置为89504E470D0A1A0A0000000D49484452

c语言多个文件合成一个,C语言编写读取3个二进制文件合成一个

#includeint main(int argc, char*argv[]){if (argc != 4)return -1;#define N 3FILE *in1, *in2, *in3;if ((in1 = fopen(argv[1], "rb")) != NULL)if ((in2 = fopen(argv[2], "rb")) != NULL)if ((in3 = fopen(argv...

weixin_33067503的博客 662

python 读取二进制 显示图片案例

主要介绍了python 读取二进制 显示图片案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

用Python为我编写一个合并二进制文件的程序

我可以用Python编写一个将两个二进制文件合并为一个文件的程序,代码如下:with open('file1.bin', 'rb') as file1, open('file2.bin', 'rb') as file2, open('output.bin', 'wb') as outfile: outfile.write(file1.read()) outfile.write(fi...

weixin_42588877的博客 415

白炽灯寿命工程解析:从钨丝蒸发到电压控制的可靠性设计

白炽灯作为一种经典的电光源,其工作原理基于电流通过钨丝产生热辐射发光。在高温下,钨丝会持续蒸发导致灯丝逐渐变细、电阻增大,这是影响其寿命的核心物理机制。从工程角度看,白炽灯的可靠性设计涉及材料科学、热力学和电路设计的交叉,技术价值在于通过理解其失效原理,可以在成本与性能间取得最佳平衡。在实际应用中,电压波动、开关浪涌电流和机械振动是主要寿命杀手,尤其在工业控制、仪器仪表和特定照明场景中,合理的设计能大幅提升系统稳定性。本文深入探讨了钨蒸发、热应力等关键因素,并结合浪涌抑制和降压设计等实战技巧,为工程师提供了

weixin_28684655的博客 571

储能EMS工作原理深度剖析:功率分配与充放电策略的底层逻辑

储能EMS的功率分配与充放电策略,是其智能化的集中体现。功率分配更像一个“执行指挥官”,关注如何将总任务高效、公平、安全地分解到每个士兵(PCS/电池簇);而充放电策略则像“总参谋长”,基于战场情报(市场、电网、自身状态)制定最优的作战计划。AI强化学习策略:让EMS通过与复杂环境不断交互,自主学习最优策略,适应不确定性。数字孪生与仿真:在虚拟空间中提前验证策略,评估风险,实现预防性控制。跨站协同优化:多个储能站的EMS通过云平台协同,参与区域电网甚至跨省市场的联合优化调度。

小帽子的博客 377

二进制.bin文件切分(shell和python两种方式)

今天工作遇到一个问题,将128MB随机数的二进制文件进行切分为每个128KB随机数,首先度娘到python脚本实现的,简单修改了一下脚本发现可以将128MB的数据拆分128KB然后存入对应的文件; 测试脚本: # -*- coding: utf-8 -*- #按照大小分割文件 import os filename = "/home/ndsec/Downloads/random/random_hsm1.bin"#需要进行分割的文件,请修改文件名 size = 131072 #分割大小约128K

lingdukafeibj的博客 5737

nrf52840的uart0与uart1双串口使用

nrf52840的uart0与uart1双串口使用 项目原使用nrf52832,后面由于项目需要用到双串口,改用nrf52840,官方的例程没看到使用uart1的,找遍全网都没找到uart1的使用资料,有些不负责任的网文居然说40也只有一个uart,吓得俺赶紧又查看了一次datesheet,O得K、木鸭梨 SDK代码uart驱动中,搜索到uart1的驱动部分,说明官方驱动有uart1支持的 自己动手,丰衣足食吧,下面以nRF5_SDK_17.0.0_9d13099版本,在examples\ble_per

chhen168的博客 5627

关于二进制文件读取存写的一些问题和总结

https://blog.youkuaiyun.com/yyyllla/article/details/83039909(判断二进制位) 将用文本表示的二进制数字转换为十进制数字https://ww2.mathworks.cn/help/matlab/ref/bin2dec.html 二进制写入,注意字节和bit的切分http://ask.zol.com.cn/x/5148439.html win...

smileformylove的博客 726

Cadence IC618/Spectre231安装避坑指南:详解License配置、环境变量隔离与依赖检查

本文详细介绍了Cadence IC618/Spectre231的安装与配置避坑指南,包括许可证系统精妙控制、环境隔离模块化实践、依赖管理进阶技巧以及长期维护的黄金法则。通过实战案例和解决方案,帮助工程师构建稳定可靠的EDA工作环境,提升芯片设计效率。

weixin_28683065的博客 463

Blender骨骼绑定实战:如何用IK控制器让角色动作更自然(附常见问题解决)

本文深入探讨了Blender中IK控制器的实战应用,旨在解决角色动作僵硬问题。通过对比IK与FK的核心差异,详细解析了IK链的构建、参数设置及极向目标的使用,并提供了控制器定制、IK/FK无缝切换等高级技巧,帮助动画师实现更自然、符合直觉的角色动画。

weixin_29243279的博客 442

python写二进制大文件_Python:切片非常大的二进制文件

Say I have a binary file of 12GB and I want to slice 8GB out of the middle of it. I know the position indices I want to cut between.How do I do this? Obviously 12GB won't fit into memory, that's fine,...

weixin_39729840的博客 267

【重识云原生】第四章云网络4.7.5节vDPA方案——virtio的半硬件虚拟化实现

vDPA(vhost Data Path Acceleration)即是让virtio数据平面不需主机干预的解决方案。该框架由Redhat提出,实现了virtio数据平面的硬件卸载。控制平面仍然采用原来的控制平面协议,当控制信息被传递到硬件中,硬件完成数据平面的配置之后,数据通信过程由硬件设备(智能网卡)完成,虚拟机与网卡之间直通。中断信息也由网卡直接发送至虚拟机不需要主机的干预。......

junbaozi的专栏 2190

python读取文件小结

你想通过python从文件中读取文本或数据。 一.最方便的方法是一次性读取文件中的所有内容并放置到一个大字符串中: all_the_text = open('thefile.txt').read( )     # 文本文件中的所有文本   all_the_data = open('abinfile','rb').read( )    # 二进制文件中的所有数据

nanjunxiao的专栏 6万+

windows在使用ping 127.0.0.1时出现一般故障的解决方案

本文主要介绍了windows在使用ping 127.0.0.1时出现一般故障的解决方案,希望能对使用windows的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 7万+

Windows2008使用-解决漏洞-CVE-2010-2730

随着硬件的升级,操作系统也逐渐进行了版本更新。目前阶段,Windows2016Server、Windows2022Server逐渐成为了以Windows系列的服务器平台系统。对于有些应用而言,由于其业务的固定,可能仍只能运行在Windows2008Server或者Windows2012Server上。有时候我们为安全需要,需要将相关的操作系统涉及的漏洞做修复。最近碰到在一个Windows2008R2 的操作系统漏洞CVE-2010-2730,一顿操作,终于找到了合适的方案,这里分享给大家。

mystonelxj的博客 2316

Python列表切分实战:从基础切片到百万级数据分块优化

列表切分是Python数据处理中最基础也最易被低估的核心操作,本质涉及内存布局、索引边界与数据访问效率。其原理源于Python序列协议与切片机制——通过start/stop/step在连续或非连续内存中定位子序列,但不同实现(如list切片、numpy视图、itertools生成器)在拷贝行为、类型支持和性能表现上差异显著。技术价值体现在避免内存爆炸、提升吞吐效率及保障分组语义正确性;典型应用场景包括API响应分页、日志流式批处理、电商库存分组与机器学习样本切块。本文聚焦真实工程约束下的方案选型逻辑,深度解

cuml0912的博客 451

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

python读取写入文件_python读取文件并写入内容到文件

原博文2019-09-13 15:32 −读取文件内容: # 读取文件内容并按换行符切分 lines = open("data/voc01.txt", encoding="utf-8").read().split("\n") 写入文件: # 追加写入到指定文件 str = "abcd" with open('E:/test...相关推荐2019-12-06 19:14 −# r 以...

weixin_39827585的博客 279

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Python文件读写

你想通过Python从文件中读取文本或数据。 一.最方便的方法是一次性读取文件中的所有内容并放置到一个大字符串中: all_the_text = open('thefile.txt').read( )     # 文本文件中的所有文本   all_the_data = open('abinfile','rb').read( )    # 二进制文件中的所有数据 

aoebug的博客 458

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Python文件操作

创建文件对象 文件对象名 = open('文件名','打开方式',缓冲区) 缓冲区指定了读写文件的缓冲模式,0表示不缓存,1表示缓存,大于1表示缓存区的大小。默认为缓存模式。对文件内容操作完成之后,一定要关闭文件,可使用文件对象名.close()关闭文件,也可用关键字 with 自动管理资源,在代码块执行完毕后自动还原进入该代码块时的现场,用法:with open('文件名','打开方式') as...

BelthPixtink的博客 387

python——文件读写学习

@python学习记录 编码 计算机只能识别01,不同位数的01产生不同组合,这种组合作为计算机识别不同状态的基础。ASCII编码就是规定了英文字母(区分大小写)以及常用字符用哪些位数的二进制来表示,7个比特位就足够完成编码。欧洲某些语言有只有英文字母还不够,例如注音符,此时拓展到8个比特位的01来编码。对于中文而言用了16个比特位来表示部分常用汉字。 国际通用编码:Unicode。 我的理解是为...

Ssssstudy_的博客 651
上一篇: 数据分析SQL环比增长率、同比增长率
下一篇: 图解-使用【变异系数】赋予权重,并比较效果
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值