Python 我需要检查我的文件是否以BOM开头,是否以utf-16-le编码
以下是我尝试过的: 我找到了这个文件: 所以我尝试了一段代码:Python 我需要检查我的文件是否以BOM开头,是否以utf-16-le编码,python,encoding,character-encoding,byte-order-mark,Python,Encoding,Character Encoding,Byte Order Mark,以下是我尝试过的: 我找到了这个文件: 所以我尝试了一段代码: def check_encoding(self, filename): data = open(self.input_path_value.get() + "/" + filename, 'r') if data.startswith(codecs.BOM_UTF16_LE): return True else: re
def check_encoding(self, filename):
data = open(self.input_path_value.get() + "/" + filename, 'r')
if data.startswith(codecs.BOM_UTF16_LE):
return True
else:
return False
但是它不理解函数startswith()
。我只需要检查文档的第一个字符(BOM所在的位置)。我的文件可以有9Go大小,所以我不能把文本放在RAM中
我还试着做一些类似的事情:
try:
data = open(self.input_path_value.get() + "/" + filename, 'r', encoding = 'utf-16-le')
return True
except:
return False
但它并没有真正检查是否有BOM,有时它可以工作,但它不是真正的utf16编码
你知道如何简单地检查吗?startswith似乎可以,因为你没有从文件中读取数据。你所说的
数据
是一个文件对象,而不是文件的内容,而且文件对象没有startswith
方法。事实上@Matthias似乎有效!