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 list语法学习(带例子)
Nov 01 Python
Python中encode()方法的使用简介
May 18 Python
利用Python生成文件md5校验值函数的方法
Jan 10 Python
5分钟 Pipenv 上手指南
Dec 20 Python
详解Python_shutil模块
Mar 15 Python
详解Django-channels 实现WebSocket实例
Aug 22 Python
Python 转换RGB颜色值的示例代码
Oct 13 Python
详解使用django-mama-cas快速搭建CAS服务的实现
Oct 30 Python
浅析Python3 pip换源问题
Jan 06 Python
Python异常原理及异常捕捉实现过程解析
Mar 25 Python
python 生成任意形状的凸包图代码
Apr 16 Python
Python3交互式shell ipython3安装及使用详解
Jul 11 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判断远程url是否有效的几种方法小结
2011/10/08 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
php注册和登录界面的实现案例(推荐)
2016/10/24 PHP
php查找字符串中第一个非0的位置截取
2017/02/27 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
IE6弹出“已终止操作”的解决办法
2010/11/27 Javascript
JS实现上下左右对称的九九乘法表
2016/02/22 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
JS实现简易换图时钟功能分析
2018/01/04 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
微信小程序http连接访问解决方案的示例
2018/11/05 Javascript
js实现时钟定时器
2020/03/26 Javascript
vue绑定数字类型 value为数字的实例
2020/08/31 Javascript
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
Python内置函数dir详解
2015/04/14 Python
python通过imaplib模块读取gmail里邮件的方法
2015/05/08 Python
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
Python面向对象特殊属性及方法解析
2020/09/16 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
eDreams巴西:廉价机票,酒店优惠和度假套餐
2017/04/14 全球购物
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
运动会主持词大全
2015/07/02 职场文书
周一问候语大全
2015/11/10 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
如何在Mac上通过docker配置PHP开发环境
2021/05/29 PHP
使用Redis实现实时排行榜功能
2021/07/02 Redis