在 Python 中,如何读取二进制文件并遍历该文件的每个字节?
原文由 Jesse Vogt 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Python 中,如何读取二进制文件并遍历该文件的每个字节?
原文由 Jesse Vogt 发布,翻译遵循 CC BY-SA 4.0 许可协议
该生成器从文件中生成字节,以块的形式读取文件:
def bytes_from_file(filename, chunksize=8192):
with open(filename, "rb") as f:
while True:
chunk = f.read(chunksize)
if chunk:
for b in chunk:
yield b
else:
break
# example:
for b in bytes_from_file('filename'):
do_stuff_with(b)
有关 迭代器 和 生成 器的信息,请参阅 Python 文档。
原文由 codeape 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
4 回答893 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
Python >= 3.8
感谢 海象运算符(
:=
) ,解决方案非常短。我们从文件中读取bytes
对象并将它们分配给变量byte
Python >= 3
在较旧的 Python 3 版本中,我们不得不使用稍微更冗长的方式:
或者正如 benhoyt 所说,跳过不等于并利用
b""
评估为 false 的事实。这使得代码在 2.6 和 3.x 之间兼容,无需任何更改。如果您从字节模式转到文本模式或相反,它还可以避免您更改条件。Python >= 2.5
在 Python 2 中,它有点不同。这里我们得到的不是字节对象,而是原始字符:
注意 with 语句在低于 2.5 的 Python 版本中不可用。要在 v 2.5 中使用它,您需要导入它:
在 2.6 中不需要。
Python 2.4 及更早版本