【发布时间】:2015-03-12 18:00:47
【问题描述】:
我有一些为 Python 3 编写的代码,我正在尝试使 Python 2.7 兼容。在 Python 3 中,代码 f.seek(0, SEEK_END) 返回 320816,但在 Python 2 中,相同的代码返回 None。当我打印我感兴趣的文件部分时,我得到一堆格式为b'NEUEVLBL\x90\x00ainp16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 的行,这让我相信该错误与 Python 2.7 将其作为常规字符串而不是字节文字,可能与 Python 2.7 使用 \ 作为转义字符有关(Python 3 中不是这种情况)。有人有什么建议吗?
编辑:在任何人建议之前,是的,我已经尝试过3to2
【问题讨论】:
-
file.seek()被记录为在 python2 中返回None。对我来说,字符串看起来像是一个合适的字节数组。最后一个斜线真的在打印输出中吗? -
不,我剪掉了一堆,因为它只是有点继续,继续,继续。 Python 2 中没有
` at the actual end. I'm confused, it _always_ returnsNone`?这样做的目的是什么?在我的代码中,f.seek的输出(Python 3 中的 int)稍后用作参数。如何在 Python 2 中获得相同的 int? -
这是因为在 Python2 中它是底层
fseek()调用的直接实现,它也不会返回文件中的新位置。file.tell()可用于获取该值。另请参阅下面@Ignacio 的答案。
标签: python-2.7 python-3.x seek fseek