如何使用python源文件的'coding'标头正确读取其内容?

时间:2015-02-11 16:43:41

标签: python python-3.x encoding character-encoding

Python源文件通常带有类似于以下<{p>的coding标头

# -*- coding: iso-8859-1 -*-

我该如何正确解析这样一个文件的内容?有没有比在二进制模式下手动打开文件,读取一行,并检查它是否包含标题更好的方法?有没有这样做的图书馆?


背景:这是在修复this bug的情况下进行的,当与python3和importmagic一起使用时会崩溃elpy。我正在尝试修复的代码使用

with open(filename) as fd:
    success = subtree.index_source(filename, fd.read())

并在非utf-8文件上崩溃。理想情况下,我希望将更改保持在最低限度。

1 个答案:

答案 0 :(得分:1)

tokenize.open()完全相同:它使用coding标题(encoding declaration)中指定的字符编码打开Python源文件。

你可以decode on-the-fly remote Python files too