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实现决策树C4.5算法的示例
May 30 Python
深入分析python中整型不会溢出问题
Jun 18 Python
Python内存读写操作示例
Jul 18 Python
Python学习笔记之视频人脸检测识别实例教程
Mar 06 Python
Python何时应该使用Lambda函数
Jul 02 Python
基于Django框架的权限组件rbac实例讲解
Aug 31 Python
python 字符串常用方法汇总详解
Sep 16 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
Mar 09 Python
使用Python实现批量ping操作方法
May 06 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 Python
python 两种方法删除空文件夹
Sep 29 Python
Python 类,对象,数据分类,函数参数传递详解
Sep 25 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下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
将数组写入txt文件 var_export
2009/04/21 PHP
PHP面向对象教程之自定义类
2014/06/10 PHP
javascript attachEvent和addEventListener使用方法
2009/03/19 Javascript
js螺旋动画效果的具体实例
2013/11/15 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
js实现可兼容IE、FF、Chrome、Opera及Safari的音乐播放器
2015/02/11 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
2017/03/29 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
layer弹出层父子页面事件相互调用方法
2018/08/17 Javascript
微信小程序支付前端源码
2018/08/29 Javascript
es6中reduce的基本使用方法
2019/09/10 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
Python设计模式之观察者模式实例
2014/04/26 Python
python使用PIL缩放网络图片并保存的方法
2015/04/24 Python
Python selenium如何设置等待时间
2016/09/15 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
2017/11/08 Python
python实现局域网内实时通信代码
2019/12/22 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
python安装cx_Oracle和wxPython的方法
2020/09/14 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
2021/01/21 Python
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
计算机应用与科学个人的自我评价
2013/11/15 职场文书
物流专业自荐信
2014/05/23 职场文书
大学生求职信
2014/06/17 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
教师节主题班会教案
2015/08/17 职场文书
2016春季小学开学寄语
2015/12/03 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
导游词之广州陈家祠
2019/10/21 职场文书
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js