finish copy files follow bytes sort
This commit is contained in:
37
files_utils/public.py
Normal file
37
files_utils/public.py
Normal file
@@ -0,0 +1,37 @@
|
||||
def ReadDiskBytes(volume_letter: str, start_byte: int, length: int) -> bytes:
|
||||
"""
|
||||
从指定磁盘的指定起始位置读取指定长度的字节。
|
||||
|
||||
:param volume_letter: 盘符(如 "Y")
|
||||
:param start_byte: 起始字节位置(整数)
|
||||
:param length: 要读取的字节数(整数)
|
||||
:return: 读取到的原始字节数据(bytes)
|
||||
"""
|
||||
if not isinstance(volume_letter, str) or len(volume_letter.strip()) != 1:
|
||||
raise ValueError("drive_letter 必须是单个字母,如 'Y'")
|
||||
|
||||
# 构建 Windows 设备路径格式:\\.\Y:
|
||||
disk_path = f"\\\\.\\{volume_letter.strip().upper()}:"
|
||||
|
||||
try:
|
||||
with open(disk_path, "rb") as disk:
|
||||
disk.seek(start_byte)
|
||||
data = disk.read(length)
|
||||
return data
|
||||
except PermissionError:
|
||||
raise PermissionError("权限不足,请以管理员身份运行程序")
|
||||
except Exception as e:
|
||||
raise RuntimeError(f"读取磁盘失败:{e}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
drive = "Y"
|
||||
start = 687685632
|
||||
size = 7163904
|
||||
|
||||
try:
|
||||
content = ReadDiskBytes(drive, start, size)
|
||||
print(f"成功读取 {len(content)} 字节内容。前100字节为:")
|
||||
print(content[:100])
|
||||
except Exception as e:
|
||||
print("错误:", e)
|
Reference in New Issue
Block a user