这适用于Python 2.7但不适用于3.5。
def file_read(self, input_text):
doc = (file.read(file(input_text))).decode('utf-8', 'replace')
我试图打开此文件,input_text是argparse的路径值。
我收到此错误。
NameError: name 'file' is not defined
我认为Python 3.5使用"打开"而不是"文件",但在这种情况下,我不太了解如何使用open。
答案 0 :(得分:3)
您的原始代码适用于Python 2.7,但它的风格很糟糕。这个用途的file
很久以前就被弃用了,赞成使用open
,而不是调用file.read
传递文件作为参数,你应该调用.read
返回对象的方法。
编写在Python 2上执行的代码的正确方法是
with open(input_text) as docfile:
doc = docfile.read().decode('utf-8', 'replace')
这在Python 3中不起作用,因为没有模式的open
现在默认为读取unicode文本。此外,它会假设文件采用本机编码,并使用 strict 错误处理对其进行解码。但是,Python 3实际上比使用Python 2更容易处理文本文件,因为您可以将编码和错误行为作为参数传递给open
本身:
with open(input_text, encoding='utf-8', errors='replace') as docfile:
doc = docfile.read()