Python 3.x 文件的第一个readline()上是否有额外字符?

Python 3.x 文件的第一个readline()上是否有额外字符?,python-3.x,file-io,utf-8,byte-order-mark,Python 3.x,File Io,Utf 8,Byte Order Mark,我正在读取的文件的第一行似乎遵守的规则与其他行不同 预期行为:每行在开始时检查哈希值,如果没有找到,则执行操作 实际行为:除了第一行,这是真的。在checkForMatch()中,第一行以某种方式通过try/except 哈克:如果我包括第二个readline以通过第一个readline,那么所有后续行都可以正常工作。如果我正确处理try/except以报告并跳过第一行,则所有后续行都可以正常工作 rulesFile = open("example.tsv","r",encoding="utf-

我正在读取的文件的第一行似乎遵守的规则与其他行不同

预期行为:每行在开始时检查哈希值,如果没有找到,则执行操作

实际行为:除了第一行,这是真的。在checkForMatch()中,第一行以某种方式通过try/except

哈克:如果我包括第二个readline以通过第一个readline,那么所有后续行都可以正常工作。如果我正确处理try/except以报告并跳过第一行,则所有后续行都可以正常工作

rulesFile = open("example.tsv","r",encoding="utf-8")

# line = rulesFile.readline()
line = rulesFile.readline()
while line != "":
    line = line.lstrip()
    line = line.rstrip()
    if line != "" and line[0] != "#":
        checkForMatch(line, args)
    line = rulesFile.readline()
第一行和第二行都由哈希、空格和ascii文本组成

# First line
# Second line
我看了一些其他的答案,并试图替换

line[0] != "#"

它可能更像python,但输出仍然相同


文件的第一行是否有一个秘密的初始字符,或者这里有其他一些微妙的问题?

您忘记了BOM表

rulesFile = open("example.tsv", "r", encoding="utf-8-sig")

忘了,一点也不。从未见过编码符号并信任其他人的旧脚本。。。-sig是否适用于所有位顺序,或者是否有不同的编码值需要尝试?UTF-8只有一个字节顺序。我正在删除有关BOM和UTF-8的更多信息(和参数)的链接,因为我试图找出UTF-8和UTF-8-sig存在的原因。如果你也这么想,给你。
rulesFile = open("example.tsv", "r", encoding="utf-8-sig")