首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文件的一部分读为二进制文件,部分读取为文本。

将文件的一部分读为二进制文件,部分读取为文本。
EN

Stack Overflow用户
提问于 2022-08-24 10:25:01
回答 1查看 29关注 0票数 0

我正在尝试编辑一些打印文件,这些文件由一个非常短(<100个字节)的头(二进制)、许多@PJL...行(可读为纯文本)和二进制(以多种不同的语言之一表示)组成。

虽然可以将整个文件处理为二进制文件,但将@PJL行作为纯文本处理要容易得多。这将需要将文件中第一个@PJL和第一个\r之间的部分读取为文本,而不是后面跟着的是@PJL

例如:

代码语言:javascript
复制
header
@PJL ... \r
@PJL ... \r
@PJL ... \r
b\01b\07...

注意:虽然文件可以变得相当大,但@PJL行总是很短(最多只有几十行),因此将它们作为单个块读入内存没有问题。

如果你知道这是如何实现的,或者能指出正确的方向,我将是非常伟大的。

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-24 11:10:54

正如您在注释中提到的那样,您希望能够逐行解析文件,而不是一次性解析全部文件。如果您一次迭代文件一个字节,并自己构建行,您就可以这样做:

代码语言:javascript
复制
with open("file.b", "rb") as f:
   line = bytearray()
   while (b := f.read(1)):    # Read one byte
      if b == b'\r':   # end of line
          # process line here
          if line[0] == ord(b'@'):   # Line starting with @
              text_line = line.decode()
          else:
              pass  # process binary line

          line = bytearray()    # Reset line
      else:
          line += b     # Add byte to line
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73471493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档