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中operator模块的操作符使用示例总结
Jun 28 Python
Python中不同进制的语法及转换方法分析
Jul 27 Python
Python基于OpenCV实现视频的人脸检测
Jan 23 Python
python实现媒体播放器功能
Feb 11 Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 Python
很酷的python表白工具 你喜欢我吗
Apr 11 Python
Python学习笔记之lambda表达式用法详解
Aug 08 Python
python树的同构学习笔记
Sep 14 Python
使用PyCharm进行远程开发和调试的实现
Nov 04 Python
python3.8 微信发送服务器监控报警消息代码实现
Nov 05 Python
使用Keras预训练模型ResNet50进行图像分类方式
May 23 Python
Python 忽略文件名编码的方法
Aug 01 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循环输出数据库内容的代码
2008/05/24 PHP
MySQL连接数超过限制的解决方法
2011/07/17 PHP
解析php做推送服务端实现ios消息推送
2013/07/01 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
List Installed Hot Fixes
2007/06/12 Javascript
asp.net下利用js实现返回上一页的实现方法小集
2009/11/24 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
2013/12/31 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
jquery实现表格本地排序的方法
2015/03/11 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
2015/09/15 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
2019/02/21 Javascript
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
Vue父组件监听子组件生命周期
2020/09/03 Javascript
Python入门篇之对象类型
2014/10/17 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
pytorch permute维度转换方法
2018/12/14 Python
NumPy统计函数的实现方法
2020/01/21 Python
Python datetime 如何处理时区信息
2020/09/02 Python
什么是Python包的循环导入
2020/09/08 Python
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
质量工程师岗位职责
2013/11/16 职场文书
演讲主持词
2014/03/18 职场文书
法人代表授权委托书
2014/04/08 职场文书
学习保证书范文
2014/04/30 职场文书
社团活动总结报告
2014/06/27 职场文书
出差报告格式模板
2014/11/06 职场文书
杭州西湖英语导游词
2015/02/03 职场文书
史上最牛的辞职信
2015/02/28 职场文书