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 冒泡,选择,插入排序使用实例
Feb 05 Python
Python解析nginx日志文件
May 11 Python
Java及python正则表达式详解
Dec 27 Python
python3.6 实现AES加密的示例(pyCryptodome)
Jan 10 Python
Linux CentOS7下安装python3 的方法
Jan 21 Python
利用Python写一个爬妹子的爬虫
Jun 08 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
Python装饰器语法糖
Jan 02 Python
Python字典遍历操作实例小结
Mar 05 Python
Pytorch高阶OP操作where,gather原理
Apr 30 Python
pytorch简介
Nov 11 Python
Python实现我的世界小游戏源代码
Mar 02 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指定函数参数默认值示例代码
2013/12/04 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
2014/05/06 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
asp 的 分词实现代码
2007/05/24 Javascript
js+html+css实现鼠标移动div实例
2013/01/30 Javascript
原生js实现半透明遮罩层效果具体代码
2013/06/06 Javascript
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
addEventListener 的用法示例介绍
2014/05/07 Javascript
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
使用JavaScript破解web
2018/09/28 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
2019/01/24 jQuery
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
Python通过Pygame绘制移动的矩形实例代码
2018/01/03 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
2019/02/20 Python
python实现五子棋小程序
2019/06/18 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
关键字throw与throws的用法差异
2016/11/22 面试题
领导班子个人对照检查剖析材料
2014/09/29 职场文书
房屋转让协议书
2014/10/18 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
付款承诺函范文
2015/01/21 职场文书
小学思想品德教学反思
2016/02/24 职场文书
导游词之麻姑仙境
2019/11/18 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
SQLServer之常用函数总结详解
2021/08/30 SQL Server