Open () und codecs.open () in Python 2.7 verhalten sich merkwürdig unterschiedlich

Ich habe eine Textdatei mit der ersten Zeile der Unicode-Zeichen und allen anderen Zeilen in ASCII. Ich versuche, die erste Zeile als eine Variable und alle anderen Zeilen als eine andere zu lesen. Wenn ich jedoch den folgenden Code verwende:

# -*- coding: utf-8 -*-
import codecs
import os
filename = '1.txt'
f = codecs.open(filename, 'r3', encoding='utf-8')
print f
names_f = f.readline().split(' ')
data_f = f.readlines()
print len(names_f)
print len(data_f)
f.close()
print 'And now for something completely differerent:'
g = open(filename, 'r')
names_g = g.readline().split(' ')
print g
data_g = g.readlines()
print len(names_g)
print len(data_g)
g.close()

Ich erhalte folgende Ausgabe:

<open file '1.txt', mode 'rb' at 0x01235230>
28

7

And now for something completely differerent:

<open file '1.txt', mode 'r' at 0x017875A0>

28

77

Wenn ich readlines () nicht benutze, liest die ganze Datei, nicht nur die ersten 7 Zeilen bei codecs.open () und open ().

Warum passiert so etwas? Und warum liest codecs.open () die Datei im Binärmodus, obwohl der Parameter 'r' hinzugefügt wurde?

Update: Dies ist die Originaldatei:http://www1.datafilehost.com/d/0792d687

Antworten auf die Frage(1)

Ihre Antwort auf die Frage