add SaveFile
This commit is contained in:
@@ -8,7 +8,7 @@ from db_node import InsertNodeDataToDB
|
||||
|
||||
|
||||
def main():
|
||||
volume_letter = 'Z'
|
||||
volume_letter = 'Y'
|
||||
|
||||
# 初始化 db_config 表
|
||||
config_data = GetNTFSBootInfo(volume_letter)
|
||||
@@ -41,6 +41,7 @@ def main():
|
||||
count = InsertExtensionsToDB(common_extensions)
|
||||
print(f"共插入 {count} 个新扩展名。")
|
||||
|
||||
# 初始化 db_node 表
|
||||
InsertNodeDataToDB()
|
||||
|
||||
|
||||
|
47
test/SaveToFile.py
Normal file
47
test/SaveToFile.py
Normal file
@@ -0,0 +1,47 @@
|
||||
def copy_file_from_bytes(start_byte, end_byte, source_disk_path, target_file_path):
|
||||
"""
|
||||
根据起始字节和结束字节偏移量,从磁盘中读取指定范围的数据并保存为目标文件
|
||||
|
||||
参数:
|
||||
start_byte (int): 起始字节偏移量(包含)
|
||||
end_byte (int): 结束字节偏移量(包含)
|
||||
source_disk_path (str): 源磁盘路径(如 r"\\.\Z:")
|
||||
target_file_path (str): 目标文件路径(如 r"E:\demo.jpg")
|
||||
"""
|
||||
if start_byte > end_byte:
|
||||
print("错误:起始字节偏移量不能大于结束字节偏移量")
|
||||
return
|
||||
|
||||
try:
|
||||
with open(source_disk_path, 'rb') as disk:
|
||||
# 计算总字节数
|
||||
total_bytes = end_byte - start_byte + 1
|
||||
|
||||
# 定位到起始位置
|
||||
disk.seek(start_byte)
|
||||
|
||||
# 读取指定范围内的数据
|
||||
file_data = disk.read(total_bytes)
|
||||
|
||||
if not file_data or len(file_data) < total_bytes:
|
||||
print(f"警告:只读取到 {len(file_data)} 字节,未达到预期 {total_bytes} 字节")
|
||||
|
||||
# 写入目标文件
|
||||
with open(target_file_path, 'wb') as f:
|
||||
f.write(file_data)
|
||||
|
||||
print(
|
||||
f"成功:已从字节偏移量 {start_byte} 到 {end_byte} 读取 {len(file_data)} 字节,保存为 {target_file_path}")
|
||||
|
||||
except PermissionError:
|
||||
print("错误:需要管理员权限访问磁盘设备,请以管理员身份运行此程序")
|
||||
except Exception as e:
|
||||
print(f"发生错误: {str(e)}")
|
||||
|
||||
|
||||
copy_file_from_bytes(
|
||||
start_byte=687685632,
|
||||
end_byte=687685632+7163904,
|
||||
source_disk_path=r"\\.\Y:",
|
||||
target_file_path=r"Z:\demo.mp3"
|
||||
)
|
Reference in New Issue
Block a user