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之集合的关系
Sep 24 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
Feb 24 Python
解决pycharm无法识别本地site-packages的问题
Oct 13 Python
基于python生成器封装的协程类
Mar 20 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
Apr 02 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
Jun 18 Python
使用python实现简单五子棋游戏
Jun 18 Python
python openpyxl使用方法详解
Jul 18 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
Aug 05 Python
python rsync服务器之间文件夹同步脚本
Aug 29 Python
Python基于当前时间批量创建文件
May 07 Python
Python爬虫爬取百度搜索内容代码实例
Jun 05 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 Ubb代码编辑器函数代码
2012/07/05 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
Smarty模板常见的简单应用分析
2016/11/15 PHP
jquery.validate使用攻略 第一部
2010/07/01 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
javascript操作html控件实例(javascript添加html)
2013/12/02 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
2018/09/10 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
Vue通过ref父子组件拿值方法
2018/09/12 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
Python中import机制详解
2017/11/14 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
python使用mitmproxy抓取浏览器请求的方法
2019/07/02 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
HTML5 video视频字幕的使用和制作方法
2018/05/03 HTML / CSS
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
美赞臣营养马来西亚旗舰店:Enfagrow马来西亚
2019/07/26 全球购物
UNIX命令速查表
2012/03/10 面试题
2014年党课学习材料
2014/05/11 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
五好家庭事迹材料
2014/12/20 职场文书
解除同居协议书
2015/01/29 职场文书
2015年学校管理工作总结
2015/07/20 职场文书
高中信息技术教学反思
2016/02/16 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
《家庭教育》读后感3篇
2019/12/18 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS