python读写磁盘扇区数据_WMI:Win32_DiskDrive获取物理磁盘dri上的总扇区

WMI报告驱动器比实际大小小几MB。我认为这与Windows如何处理汽缸/磁头/扇区有关。在我的解决方案是读取超过报告的驱动器大小的末尾,直到出现错误:import wmidisks = wmi.WMI().Win32_DiskDrive(MediaType="Removable Media")for disk in disks:disk_size = int(disk.size)sector_s...
摘要由CSDN通过智能技术生成

WMI报告驱动器比实际大小小几MB。我认为这与Windows如何处理汽缸/磁头/扇区有关。在

我的解决方案是读取超过报告的驱动器大小的末尾,直到出现错误:import wmi

disks = wmi.WMI().Win32_DiskDrive(MediaType="Removable Media")

for disk in disks:

disk_size = int(disk.size)

sector_size = disk.BytesPerSector

print(disk.name, "reported size:", disk_size)

with open(disk.name, "rb") as f:

f.seek(disk_size)

while True:

try:

f.read(sector_size)

disk_size += sector_size

except PermissionError:

break

print(disk.name, "readable size:", disk_size)

对于两个不同的32GB SD卡,我得到以下结果:

^{pr2}$

但是,实际的驱动器实际上还有1024到2048个字节,我们仍然无法读取,我不确定如何获取它们。但是,这比我们之前丢失的几个MB要好。在

编辑:似乎是buffering导致了读取最后几个字节的问题。如果我这样做,我可以读取剩余的字节open(disk.name, "rb", buffering=0)。但是ÿ

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值