我有一个文本文件,其中包含第一行 unicode 字符和 ASCII 中的所有其他行。我尝试将第一行作为一个变量读取,将所有其他行作为另一个变量读取。但是,当我使用以下代码时:
# -*- 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()
我得到以下输出:
<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
如果我不使用 readlines(),则会读取整个文件,而不仅仅是 codecs.open() 和 open() 的前 7 行。
为什么会发生这样的事情?为什么 codecs.open() 以二进制模式读取文件,尽管添加了 'r' 参数?
更新:这是原始文件:http ://www1.datafilehost.com/d/0792d687