【发布时间】:2014-07-15 07:17:25
【问题描述】:
我有一个来自测量的自动生成的信息文件。它由二进制和人类可读的部分组成。我想提取一些非二进制元数据。对于某些文件,我无法访问元数据,因为 readlines() 不会产生整个文件。我猜该文件包含一些 EOF 字符。我可以毫无问题地在记事本++中打开文件。
此问题的一个可能解决方案是读取文件二进制文件并在之后将其解析为 char,同时删除 EOF char。无论如何,我想知道是否有更优雅的方式来做到这一点?
编辑: 这个问题被正确地否决了,我应该提供代码。我实际上使用
f = open(fname, 'r')
raw = f.readlines()
然后继续浏览列表。现有的 EOF 字符(取决于操作系统)似乎造成了我正在观察的破坏。我将接受使用二进制 'rb' 标志声明的答案。顺便说一句,这是一个令人印象深刻的响应时间! (-:
【问题讨论】:
-
你能告诉我们你的代码吗?您是否以任何其他方式访问过该文件?文件对象是如何打开的?
-
为什么要混合二进制和人类可读的部分?你是用二进制还是“r”格式打开文件?
-
没有什么像 EOF 字符。
-
@Messa 有一个 EOF 标记 \x1A 如果我没记错的话...这就是为什么在使用可能出现所述字符的文件时,最好强制二进制,以免它们被解释为这样(尤其是在 Windows 上)
-
@JonClements 这只是一个和其他 255 个角色一样的角色。 gist.github.com/messa/90c7c24120693dee2af7
标签: python python-2.7 readlines