学习Python开发数据恢复工具(1)

近期,由于业务需要,需要培养几个同事来做数据恢复工具开发。经过多方考虑,最终选择Python语言,一是库多,二学习难度低。本人也是第一次接触Python,和同事一起学习,把学习过程记录,共同分享。

所需Python内容

Python3 环境搭建
Python3 基础语法
Python3 基本数据类型
Python3 解释器
Python3 注释
Python3 运算符
Python3 数字(Number)
Python3 字符串
Python3 列表
Python3 条件控制
Python3 循环语句
Python3 迭代器与生成器

 

RAID0 示意图

数据被分成固定大小的块,本例使用64kb(128扇区)

按顺序写入到N块盘中。

 RAID0示意图
 DISK0DISK1DISK2DISK3
block00123
block14567
block2891011
block312131415
block416171819
block520212223
block624252627

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号磁盘路径:") % disknum
        diskpath = input(tip)
        if(os.path.exists(diskpath)):
            try:
                disk = open(diskpath, 'rb')
            except IOError:
                print('Error:没有找到 文件或打开文件失败')
                continue
            disks.append(disk)
            disksize = os.path.getsize(diskpath)
            if(disksize > maxsize):
                maxsize = disksize
            break;
        else:
            print("输入错误,重新输入")
while(True):
    outpath = input("输出文件路径:")
    try:
        outfile = open(outpath,'wb')
    except IOError:
        print('Error:没有找到 文件或读取文件失败')
        continue
    else:
        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("完成")

 

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值