学习Python开发数据恢复工具(1)
近期,由于业务需要,需要培养几个同事来做数据恢复工具开发。经过多方考虑,最终选择Python语言,一是库多,二学习难度低。本人也是第一次接触Python,和同事一起学习,把学习过程记录,共同分享。
所需Python内容
Python3 环境搭建
Python3 基础语法
Python3 基本数据类型
Python3 解释器
Python3 注释
Python3 运算符
Python3 数字(Number)
Python3 字符串
Python3 列表
Python3 条件控制
Python3 循环语句
Python3 迭代器与生成器
RAID0 示意图
数据被分成固定大小的块,本例使用64kb(128扇区)
按顺序写入到N块盘中。
RAID0示意图 | ||||
DISK0 | DISK1 | DISK2 | DISK3 | |
block0 | 0 | 1 | 2 | 3 |
block1 | 4 | 5 | 6 | 7 |
block2 | 8 | 9 | 10 | 11 |
block3 | 12 | 13 | 14 | 15 |
block4 | 16 | 17 | 18 | 19 |
block5 | 20 | 21 | 22 | 23 |
block6 | 24 | 25 | 26 | 27 |
… | … | … | … | … |
RAID0 数据重组工具源码
重组算法:
依次读取块大小(64k)的数据到缓存,然后顺序写到输出文件。
# RAID0 重组工具源码
import os
print("磁盘阵列重组工具")
# 磁盘数量
diskcnt = input("输入磁盘数量:")
# 文件对象列表
disks = []
# RAID 0 块大小 128 扇区,每次读一个块
bufsize = 512 * 128
# 文件大小
maxsize = 0
# 磁盘读缓存列表
buflist=[]
# 打开文件
for disknum in range(0,int(diskcnt)):while True:tip = ("输入%d号磁盘路径:") % disknumdiskpath = input(tip)if(os.path.exists(diskpath)):try:disk = open(diskpath, 'rb')except IOError:print('Error:没有找到 文件或打开文件失败')continuedisks.append(disk)disksize = os.path.getsize(diskpath)if(disksize > maxsize):maxsize = disksizebreak;else:print("输入错误,重新输入")
while(True):outpath = input("输出文件路径:")try:outfile = open(outpath,'wb')except IOError:print('Error:没有找到 文件或读取文件失败')continueelse:break
# 循环读取文件
# 此处使用缓存,今后可用配置文件控制读写
for block in range(0,maxsize//bufsize):# 清除缓存列表buflist.clear()#读取放到缓存for disk in disks:bufread = disk.read(bufsize)buflist.append(bufread)#缓存写入文件for i in range(0,len(buflist)):k = (disknum-block)outfile.write(buflist[i])
print("完成")
学习Python开发数据恢复工具(1)相关推荐
- 零基础学python需要多久-零基础学习Python开发需要多长时间?
原标题:零基础学习Python开发需要多长时间? Python开发技术目前可谓是互联网行业编程界的新宠,不少零基础想要进入IT行业的人员都纷纷加入学习Python开发.零基础学习Python开发技术需 ...
- 自学python需要多长时间-零基础学习Python开发需要多长时间?
原标题:零基础学习Python开发需要多长时间? Python开发技术目前可谓是互联网行业编程界的新宠,不少零基础想要进入IT行业的人员都纷纷加入学习Python开发.零基础学习Python开发技术需 ...
- python零基础实例-零基础学习Python开发练习100题实例(1)
零基础学习Python开发练习100题实例(1) 2018-02-25 09:37:59 2864浏览 1.题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序 ...
- python语言学了有用吗-转行学习Python开发有什么优势
原标题:转行学习Python开发有什么优势 编程语言那么多,哪一个适合新手学习呢?哪些语言学完后好就业?其实对于这样的问题,一个简单的判断方法就是看市场需求什么,比如现在火热的人工智能行业,人工智能行 ...
- 0基础学python要多久-零基础学习Python开发需要多长时间?
原标题:零基础学习Python开发需要多长时间? Python开发技术目前可谓是互联网行业编程界的新宠,不少零基础想要进入IT行业的人员都纷纷加入学习Python开发.零基础学习Python开发技术需 ...
- python入门经典100题-零基础学习Python开发练习100题实例(1)
零基础学习Python开发练习100题实例(1) 2018-02-25 09:37:59 2854浏览 1.题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序 ...
- 前端开发需要学python吗_在选择学习Python开发还是前端开发时需要考虑哪些因素...
首先,从技术体系结构来看,Python开发与前端开发是两个不同的学习方向,未来所从事的岗位和面对的任务场景也有较为明显的不同,但是Python开发与前端开发本身的发展前景都是比较不错的,未来的就业空间 ...
- 学习Python开发培训有用吗
学习Python开发培训有用吗?这是目前很多人都比较关注的一个问题,Python语言在最近几年是广受IT互联网行业关注的, 下面我们就针对这问题来详细的分析一下. 学习Python开发培训有用吗?Py ...
- python基础代码事例-零基础学习Python开发练习100题实例(2)
零基础学习Python开发练习100题实例(2) 2018-02-26 13:11:39 1934浏览 11.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个 ...
最新文章
- xBIM 实战01 在浏览器中加载IFC模型文件
- ASP.NET Web API 过滤器创建、执行过程(二)
- 计算机网络---物理层
- pytorch 指定卡1_在pytorch中指定显卡
- 【操作系统】连续内存分配策略
- microservices kubernetes
- java与安卓接口_Android-Java-接口Interface
- Spring Cloud Eureka 最简入门示例
- 看到抖音上 Python 工程师晒的工资条,我沉默了.....
- 在linux用sfdisk和parted 来 进行分区
- mysql 线上修改参数_9.10、mysql进程、状态在线修改参数重要知识
- 进击的UI-----------------UITableView(表视图)
- 【Gym - 101350M Make Cents?】 STL - map
- 《NVMe-over-Fabrics-1_0a-2018.07.23-Ratified》阅读笔记(4)-- Controller Architecture
- 微信视频号直播功能上线;全面打通视频号+公众号+小商店+直播私域生态组合;丨国仁网络资讯
- 写数据分析报告,建议部分憋到脸红,咋整?
- Linux也有全功能杀毒软件啦!
- 20# Vowel Count数元音-字典
- xlrd是python自带的库_xlrd库报错
- Schlumberger.PIPESIM.2017.1.932.Win64 1DVD