本文整理汇总了Python中drive.Drive.reconnect方法的典型用法代码示例。如果您正苦于以下问题:Python Drive.reconnect方法的具体用法?Python Drive.reconnect怎么用?Python Drive.reconnect使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类drive.Drive
的用法示例。
在下文中一共展示了Drive.reconnect方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: mount
# 需要导入模块: from drive import Drive [as 别名]
# 或者: from drive.Drive import reconnect [as 别名]
def mount(drive_name):
'''
Reconnects a drive as a volume.
Any data on the drive is preserved.
Returns the volume.
'''
drive = Drive.reconnect(drive_name)
vol = Volume()
block = drive.read_block(0).split(b'\n')
volinfosize= int(bytes.decode(block[0]))
volinfo =b''
volinfo+=drive.read_block(0)
if volinfosize!=1:
for i in range (1,volinfosize+1):
volinfo+=drive.read_block(i)
vol.setSize(int(bytes.decode(block[2])))
vol.setDrive(drive)
bmpArr =[]
bmp = bytes.decode(volinfo.split(b'\n')[3])
for i,v in enumerate(bmp):
if v == 'x':
bmpArr.append(1)
else:
bmpArr.append(0)
vol.setVolInfo(volinfo)
vol.setBitmapArray(bmpArr)
return vol
示例2: mount
# 需要导入模块: from drive import Drive [as 别名]
# 或者: from drive.Drive import reconnect [as 别名]
def mount(drive_name):
'''
Reconnects a drive as a volume.
Any data on the drive is preserved.
Returns the volume.
'''
drive = Drive.reconnect(drive_name)
inputt = drive.read_block(0)
data = inputt.splitlines()
length = int(data[0])
i = 1
while i < length:
inputt = drive.read_block(i)
data.extend(inputt.splitlines())
i+=1
i = 1
outcome = False
data[len(data)-1] = data[len(data)-1].rstrip()
while len(data) > (i+1):
while len(data) > (i+1) and data[i+1].isdigit() == outcome:
data[i] += data[i+1]
data.pop(i+1)
i+=1
outcome = not outcome
volume = Volume(drive, data[1])
for i in range(len(data[3])): #TODO Needs better fix
if data[3][i] == 120:
volume.bmap[i] = b'x'
volume.import_files()
return volume
示例3: mount
# 需要导入模块: from drive import Drive [as 别名]
# 或者: from drive.Drive import reconnect [as 别名]
def mount(drive_name):
drive = Drive.reconnect(drive_name)
allVolumeData = drive.read_block(0).decode()
numOfBlocksUsed = allVolumeData.split('\n',1)[0]
if int(numOfBlocksUsed)>1:
for i in range(1,int(numOfBlocksUsed)):
allVolumeData+=drive.read_block(i).decode()
data = allVolumeData.split('\n')
numOfBlocksUsed=int(data[0])
name = data[1]
#dont need this
numOfBlocksInDrive = int(data[2])
bitmap = data[3]
rootIndex = int(data[4])
usedDrives=[False]*numOfBlocksInDrive
Volume.calculate_volume_data_blocks(name, drive, rootIndex)
numOfDataBlocks = Volume.calculate_volume_data_blocks(name, drive, rootIndex )
for i in range(numOfDataBlocks):
usedDrives[i]=True
usedDrives[rootIndex]=True
volume = Volume(drive, name.encode(), rootIndex, usedDrives, numOfBlocksUsed)
#read the rootdirectory
rootString = drive.read_block(rootIndex).decode()
root= rootString.split('\n')
for i in range(len(root)):
if root[i].isdigit():
if int(root[i])!=0:
fileData = volume.drive.read_block(int(root[i])).decode().split('\n')
for i in range(0,len(fileData)-1,3):
fileName = fileData[i]
fileDataLength = fileData[i+1]
fileStart = fileData[i + 2]
#then go into the fileStart
fileDirectory = volume.drive.read_block(int(fileStart))
fileDirectory = fileDirectory.decode().split('\n')
dataLocations = []
for j in range(len(fileDirectory)):
if fileDirectory[j].isdigit():
dataLocations.append(fileDirectory[j])
#now that we have all the locations of the data, we can read all the locations and concatinate them
dataOnFile = b''
for k in range(len(dataLocations)):
dataOnFile+=volume.drive.read_block(int(dataLocations[k]))
#only want the first n bits
dataOnFile = dataOnFile[:int(fileDataLength)]
file = volume.open(fileName.encode())
file.write(0, dataOnFile)
print (file.data)
#print (root)
return volume
'''
示例4: test_reconnect_drive
# 需要导入模块: from drive import Drive [as 别名]
# 或者: from drive.Drive import reconnect [as 别名]
def test_reconnect_drive(self):
blocks = 10
drive_name = 'driveC.txt'
drive = Drive.format(drive_name, blocks)
drive.disconnect()
with self.assertRaises(IOError):
Drive.reconnect('badname')
drive = Drive.reconnect(drive_name)
self.assertEqual(blocks * Drive.BLK_SIZE, drive.num_bytes())
name = b'reconnect volume'
volume = Volume.format(drive, name)
volume.unmount()
with self.assertRaises(IOError):
Volume.mount('driveZ')
volume = Volume.mount(drive_name)
self.assertEqual(1, volume.volume_data_blocks())
self.assertEqual(name, volume.name())
self.assertEqual(blocks, volume.size())
self.assertEqual(b'x--------x', volume.bitmap())
self.assertEqual(9, volume.root_index())
volume.unmount()
示例5: mount
# 需要导入模块: from drive import Drive [as 别名]
# 或者: from drive.Drive import reconnect [as 别名]
def mount(drive_name):
'''
Reconnects a drive as a volume.
Any data on the drive is preserved.
Returns the volume.
'''
print("mounting volume: " + str(drive_name))
volume = Volume()
volume.drive = Drive.reconnect(drive_name)
# volume.drive_name = drive.name
# int
volume.block_info_occupied_blocks_num = int(volume.drive.read_block(0).split()[0].decode())
# int
volume.BLK_SIZE = volume.drive.BLK_SIZE
# print("mounting: " + str(volume.drive.read_block(0)))
volumeInfoByte = volume.read_block_info()
volumeInfoStr = volumeInfoByte.decode().split('\n')
# volume.volumeName = volumeInfoStr[1].encode()
# volume.numberOfBlocks = int(volumeInfoStr[2])
# volume.bitmapStr = volumeInfoStr[3]
# volume.rootDirIndex = int(volumeInfoStr[4])
# volume.rootFileList = volume.getRootFileList()
# volume.openingFiles = []
print("volumeInfoStr: " + str(volumeInfoStr))
# byte
volume.volume_name = volumeInfoStr[1].encode()
# int
volume.total_num_of_blocks = int(volumeInfoStr[2])
# str
volume.bitmapStr = volumeInfoStr[3]
print("mounting volume with bitmap: " + volume.bitmapStr)
# int int(volumeInfoStr[4]) [s.strip() for s in content_byte.decode().split("\n") if s.strip() != ""]
volume.root_files_block_index = [int(i) for i in volumeInfoStr[4].split() if i.strip() != "" and i.isdigit()]
print("root_files_block_index: " + str(volume.root_files_block_index))
# array
volume.rootFileList = volume.get_root_file_list()
volume.openingFiles = []
return volume