Open() et les codecs.open() en Python 2.7 comportement étrange de différentes

J'ai un fichier texte avec la première ligne de caractères unicode et toutes les autres lignes en ASCII.
J'essaie de lire la première ligne comme une variable, et que toutes les autres lignes comme de l'autre. Cependant, lorsque j'utilise le code suivant:

# -*- 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()

J'obtiens le résultat suivant:

<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

Si je n'utilise pas readlines(), ensemble de lectures de fichier, pas seulement les 7 premières lignes à la fois à des codecs.open() et open().

Pourquoi une telle chose se produire?
Et pourquoi ne codecs.open() lire le fichier en mode binaire, malgré le paramètre " r " est ajouté?

Upd: C'est le fichier d'origine: http://www1.datafilehost.com/d/0792d687

codecs.open() est pour ouvrir le fichier en mode binaire pour éviter octets regard comme des retours à la ligne interprété, avant de décodage. UTF-16 retours à la ligne sont \n\x00 ou \x00\n par exemple.
Il avait de l'aide si vous avez partagé votre entrée d'origine du fichier.
Merci pour votre réponse! Voici le fichier: wikisend.com/download/406380/1.txt
C'est un bug, comme l'a observé le Wooble: stackoverflow.com/questions/18052971/...

OriginalL'auteur Kriattiffer | 2013-04-21