recuva用来恢复误删数据,其免费版本足够家用。
自己写代码来实现的话,需要注意:
windows的磁盘直接访问名称:
\\.\PhysicalDrive{驱动器编号}
\\.\{盘符}:
在linux系统下,则是/dev/sda sdb之类的东西。
还有权限,windows的盘符冒号,还有字符转义。
下面的代码来自StackOverflow,python - How to open disks in windows and read data at low level? - Stack Overflowhttps://stackoverflow.com/questions/6522644/how-to-open-disks-in-windows-and-read-data-at-low-level
def open_physical_drive(
number,
mode="rb",
buffering=-1,
encoding=None,
errors=None,
newline=None,
closefd=True,
opener=None,
):
"""
Opens a physical drive in read binary mode by default
The numbering starts with 0
"""
return open(
fr"\\.\PhysicalDrive{number}",
mode,
buffering,
encoding,
errors,
newline,
closefd,
opener,
)
def open_windows_partition(
letter,
mode="rb",
buffering=-1,
encoding=None,
errors=None,
newline=None,
closefd=True,
opener=None,
):
"""
Opens a partition of a windows drive letter in read binary mode by default
"""
return open(
fr"\\.\{letter}:", mode, buffering, encoding, errors, newline, closefd, opener
)
# first 16 bytes from partition C:
# on Linux it's like /dev/sda1
with open_windows_partition("C") as drive_c:
print(drive_c.read(16))
# first 16 bytes of first drive
# on Linux it's like /dev/sda
with open_physical_drive(0) as drive_0:
print(drive_0.read(16))