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检测远程udp端口是否打开的方法
Mar 14 Python
Python之os操作方法(详解)
Jun 15 Python
Numpy数组的保存与读取方法
Apr 04 Python
在Python中实现替换字符串中的子串的示例
Oct 31 Python
python操作日志的封装方法(两种方法)
May 23 Python
python频繁写入文件时提速的方法
Jun 26 Python
python写入文件自动换行问题的方法
Jul 05 Python
Apache部署Django项目图文详解
Jul 30 Python
python和go语言的区别是什么
Jul 20 Python
利用Python将图片中扭曲矩形的复原
Sep 07 Python
Python+OpenCV图像处理——实现轮廓发现
Oct 23 Python
Python爬虫爬取ts碎片视频+验证码登录功能
Feb 22 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字符串操作针对负值的判断分析
2016/07/28 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
List the Stored Procedures in a SQL Server database
2007/06/20 Javascript
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
教你如何使用node.js制作代理服务器
2014/11/26 Javascript
js+jquery实现图片裁剪功能
2015/01/02 Javascript
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
详解Javascript ES6中的箭头函数(Arrow Functions)
2016/08/24 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
详解在vue-cli中使用路由
2017/09/25 Javascript
Vue项目查看当前使用的elementUI版本的方法
2018/09/27 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
numpy下的flatten()函数用法详解
2019/05/27 Python
机器学习实战之knn算法pandas
2019/06/22 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
Python内置方法和属性应用:反射和单例(推荐)
2020/06/19 Python
如何在python中实现线性回归
2020/08/10 Python
Django前后端分离csrf token获取方式
2020/12/25 Python
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
Html5调用手机摄像头并实现人脸识别的实现
2018/12/21 HTML / CSS
JACK & JONES英国官方网站:欧洲领先的男装生产商
2017/09/27 全球购物
波兰家居和花园家具专家:4Home
2019/05/26 全球购物
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
存储过程和sql语句的优缺点
2014/07/02 面试题
《我为你骄傲》教学反思
2014/02/20 职场文书
中学生演讲稿
2014/04/26 职场文书
食品安全宣传标语
2014/06/07 职场文书
乡镇务虚会发言材料
2014/10/20 职场文书
python基础之while循环语句的使用
2021/04/20 Python
详细聊聊vue中组件的props属性
2021/11/02 Vue.js
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA
Nginx的gzip相关介绍
2022/05/11 Servers