Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我需要检查我的文件是否以BOM开头,是否以utf-16-le编码_Python_Encoding_Character Encoding_Byte Order Mark - Fatal编程技术网

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似乎有效!