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生成随机密码或随机字符串的方法
Jul 03 Python
Python黑魔法@property装饰器的使用技巧解析
Jun 16 Python
Python的mysql数据库的更新如何实现
Jul 31 Python
python实现Dijkstra静态寻路算法
Jan 17 Python
python 自定义装饰器实例详解
Jul 20 Python
Python中调用其他程序的方式详解
Aug 06 Python
python中类的输出或类的实例输出为这种形式的原因
Aug 12 Python
python numpy中cumsum的用法详解
Oct 17 Python
Python实现打印实心和空心菱形
Nov 23 Python
linux环境下安装python虚拟环境及注意事项
Jan 07 Python
Python 之 Json序列化嵌套类方式
Feb 27 Python
python画环形图的方法
Mar 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
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
2012/01/12 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
php获取用户浏览器版本的方法
2015/01/03 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
2017/02/10 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
srcElement表格样式
2006/09/03 Javascript
jquery 最简单易用的表单验证插件
2010/02/27 Javascript
鼠标滑过出现预览的大图提示效果
2014/02/26 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
JavaScript中的Function函数
2015/08/27 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
2016/05/17 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
javascript中活灵活现的Array对象详解
2016/11/30 Javascript
Angularjs 动态改变title标题(兼容ios)
2016/12/29 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
在Mac上删除自己安装的Python方法
2018/10/29 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
Python 自由定制表格的实现示例
2020/03/20 Python
vscode配置anaconda3的方法步骤
2020/08/08 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
使用django自带的user做外键的方法
2020/11/30 Python
迪斯尼商品官方网站:ShopDisney
2016/08/01 全球购物
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
Internet主要有哪些网络群组成
2015/12/24 面试题
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
施工安全协议书
2013/12/11 职场文书
应届毕业生应聘自荐信范文
2014/02/26 职场文书
房地产项目建议书
2014/03/12 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers
Flask搭建一个API服务器的步骤
2021/05/28 Python