当前位置: 首页 > 面试题库 >

Python-读取二进制文件并遍历每个字节

栾和风
2023-03-14
问题内容

在Python中,如何读取二进制文件并在该文件的每个字节上循环?


问题答案:

Python 2.4及更早版本

f = open("myfile", "rb")
try:
    byte = f.read(1)
    while byte != "":
        # Do stuff with byte.
        byte = f.read(1)
finally:
    f.close()

Python 2.5-2.7

with open("myfile", "rb") as f:
    byte = f.read(1)
    while byte != "":
        # Do stuff with byte.
        byte = f.read(1)

请注意,with语句在2.5以下的Python版本中不可用。要在v 2.5中使用它,你需要导入它:

from __future__ import with_statement

在2.6中是不需要的。

Python 3

在Python 3中,这有点不同。我们将不再以字节模式而是字节对象从流中获取原始字符,因此我们需要更改条件:

with open("myfile", "rb") as f:
    byte = f.read(1)
    while byte != b"":
        # Do stuff with byte.
        byte = f.read(1)

或如benhoyt所说,跳过不相等并利用b”“评估为false 的事实。这使代码在2.6和3.x之间兼容,而无需进行任何更改。如果你从字节模式改为文本或相反,也可以避免更改条件。

with open("myfile", "rb") as f:
    byte = f.read(1)
    while byte:
        # Do stuff with byte.
        byte = f.read(1)


 类似资料:
  • 问题内容: 我有一个如下所示的XML结构,但规模更大: 为此,我使用了以下代码: 但是,打印出来的作者文本为“无”。我尝试使用下面的变体来摆弄,但这会导致程序中断。 正确的输出应为: 但是我得到的是: 关于如何解决这个问题有什么建议吗? 问题答案: 您的类型为1(),通常您需要获取一个字符串。这会工作

  • 问题内容: 我发现用Python读取二进制文件特别困难。你能帮我个忙吗?我需要读取此文件,在Fortran 90中,该文件很容易被读取 详细而言,文件格式为: 如何使用Python阅读?我尝试了一切,但没有成功。我是否有可能在python中使用f90程序,读取此二进制文件,然后保存需要使用的数据? 问题答案: 读取二进制文件内容,如下所示: 然后使用struct.unpack “解压缩”二进制数据

  • 问题内容: 我正在尝试使用Python 3读取包含图像(视频)的12位二进制文​​件。 要读取类似的文件但以16位编码,以下代码可以很好地工作: 其中filename_video是文件,可以从另一个文件读取视频的nb_frames,高度和宽度特征。“工作得很好”是指快速:在计算机上读取具有140帧的640x256视频大约需要1毫秒。 据我所知,当文件以12位编码时,由于没有uint12类型,因此无

  • 我正在尝试构建一个预算计算器来练习python。目前,我正在尝试迭代目录中的文件,然后将每个文件通过一个函数传递,以将我需要的数据提取到DataFrame(准备让它对其执行计算)。 我已经设法创建了清理数据的函数,以及迭代文件的for循环。但是,我不知道如何为每次迭代附加DataFrame。 当我运行此代码时,只有一个文件被添加到DataFrame,而不是所有文件。 提前感谢您的任何帮助

  • 问题内容: 我有一个较长的无符号整数文件(每个64位,0.47GB文件),需要读取并存储在数组中。经过一番思考之后,由于Java中的所有内容都已签名(请纠正我,请纠正我),因此我长时间使用了该类型,我想不出更好的选择了。无论如何,仅需对数组进行排序,因此原始数字的精确值并不是最重要的。我们应该测量排序算法的效率,仅此而已。但是,当我实际要读取文件时(在下面的代码中),我遇到了砖墙。 它会一直持续下

  • 问题内容: 我正在尝试从URLConnection读取二进制文件。当我使用文本文件对其进行测试时,它似乎可以正常工作,但对于二进制文件则不能。发送文件时,我在服务器上使用以下mime类型: 但是到目前为止,似乎没有任何效果。这是我用来接收文件的代码: 问题答案: 我就是这样