python实现任意位置文件分割的实例


Posted in Python onDecember 14, 2018

应用场景

在嵌入式开发中,常常需要将一个binary文件分割成多个文件,或者将一个binary的某块区域抓成一个单独文件。本篇blog以python为例,实现了以上需求;

实现代码

#!/usr/bin/python
"""
./file_split.py, just for testing;
"""

import sys
import os
import re
from os.path import join

from array import array

import datetime

ORIGINAL_BIN = 'test.bin'

SPLIT_BIN1 = 'output/1.bin'
SPLIT_BIN2 = 'output/2.bin'
SPLIT_BIN3 = 'output/3.bin'


def main(argv):
  print "time:",datetime.datetime.now()
  print "Platform:",os.name

  if (os.path.exists('output') == False):
    os.mkdir('output')

  originalBin = open(ORIGINAL_BIN,'rb').read()
  originalBin = array('c', originalBin)

  bin1 = originalBin[0x0:0x4000]
  open(SPLIT_BIN1,'wb+').write(bin1)

  bin2 = originalBin[0x130000:0x130000+0x2000]
  open(SPLIT_BIN2,'wb+').write(bin2)

  bin3 = originalBin[0x160000:0x160000+0x2000]
  open(SPLIT_BIN3,'wb+').write(bin3)

  return 0


if __name__ == '__main__':
  main(sys.argv)

代码解析

if (os.path.exists('output') == False):
  os.mkdir('output')

检查当前目录是否存在output目录,如果没有就创建output目录, 文件分割后的bin就存放在output目录;

originalBin = open(ORIGINAL_BIN,'rb').read()
originalBin = array('c', originalBin)

调用open打开ORIGINAL_BIN路径的文件,并且读到originalBin这个变量中;将originalBin中的数据转化成array,并且数组单个元素为character单字节;

bin1 = originalBin[0x0:0x4000]
open(SPLIT_BIN1,'wb+').write(bin1)

将originalBin数组中的0x0到0x4000地址的数据初始化给bin1;然后创建SPLIT_BIN1路径的文件,将bin1写入该文件;bin2和bin3同理。

以上这篇python实现任意位置文件分割的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 测试实现方法
Dec 24 Python
Python标准异常和异常处理详解
Feb 02 Python
Python用zip函数同时遍历多个迭代器示例详解
Nov 14 Python
python subprocess 杀掉全部派生的子进程方法
Jan 16 Python
python非递归全排列实现方法
Apr 10 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
Jul 26 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
Dec 03 Python
Python对接 xray 和微信实现自动告警
Sep 17 Python
基于python3监控服务器状态进行邮件报警
Oct 19 Python
Python终端输出彩色字符方法详解
Feb 11 Python
python函数调用,循环,列表复制实例
May 03 Python
python使用ctypes库调用DLL动态链接库
Oct 22 Python
pytorch permute维度转换方法
Dec 14 #Python
Python语言快速上手学习方法
Dec 14 #Python
分享Python切分字符串的一个不错方法
Dec 14 #Python
在python中按照特定顺序访问字典的方法详解
Dec 14 #Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
Dec 14 #Python
python列表list保留顺序去重的实例
Dec 14 #Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
Dec 14 #Python
You might like
PHP has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
js中精确计算加法和减法示例
2014/03/28 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
2017/01/22 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
yarn的使用与升级Node.js的方法详解
2017/06/04 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
详解vue-cli3多页应用改造
2019/06/04 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
有趣的JavaScript隐式类型转换操作实例分析
2020/05/02 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
Python编程之列表操作实例详解【创建、使用、更新、删除】
2017/07/22 Python
基于Django用户认证系统详解
2018/02/21 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
初探利用Python进行图文识别(OCR)
2019/02/26 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
2020/06/02 Python
Python如何实现远程方法调用
2020/08/07 Python
使用HTML5 Canvas绘制直线或折线等线条的方法讲解
2016/03/14 HTML / CSS
W3C公布最新的HTML5标准草案
2008/10/17 HTML / CSS
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
StubHub希腊:购买体育赛事、音乐会和剧院门票
2019/08/03 全球购物
是什么让J2EE适合用来开发多层的分布式的应用
2015/01/16 面试题
个人找工作的自我评价
2013/10/17 职场文书
个人查摆剖析材料
2014/10/04 职场文书
2014年个人业务工作总结
2014/11/17 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书