【问题标题】:Python reading of a file stops before it should in Windows 7 [duplicate]在 Windows 7 中,文件的 Python 读取会在它应该停止之前停止 [重复]
【发布时间】:2011-09-20 19:46:24
【问题描述】:

我正在使用Python打开电脑中的物理磁盘读取第一个扇区。

disk = r"\\.\PhysicalDrive0"
with open(disk, 'r') as f:
        f.seek(0)
        partdata = f.read(512)
len(partdata)

在 Windows XP 中,len(partdata) 将返回 512 并具有正确的内容。在 windows 7 中,len(partdata) 返回 230 并且数据是正确的,直到它中断。

另外,尝试在磁盘中寻找更远的位置也不起作用,它只返回前 230 个字节。

Python 版本 2.7.1 和 2.7.2 32 位和 64 位

在 Windows 7 上,一台 32 位机器一台 64 位。

【问题讨论】:

  • 有趣的问题。我假设您以管理员身份运行此代码?我想如果这里有一个权限因素,你要么得到所有数据,要么一无所有。无论如何,这是一个很好的问题。
  • 是的,它在 Win7 上以管理员身份运行。如果不这样做,则根本无法打开文件。

标签: python windows-7 disk readfile


【解决方案1】:

尝试以二进制模式打开

with open(disk, 'rb') as f:

【讨论】:

  • 谢谢。这就是问题所在。知道为什么 XP 有效而 7 无效吗?
  • @Shawn,大概您正在读取的数据没有任何 Windows 在文本模式下特别处理的字节。特别是 chr(26) 在文本模式下意味着“文件结束”
猜你喜欢
  • 2015-11-27
  • 2021-11-29
  • 1970-01-01
  • 2019-01-17
  • 2018-03-18
  • 2014-03-25
  • 1970-01-01
  • 2019-12-20
  • 2016-04-24
相关资源
最近更新 更多