2012-12-13 33 views
0

当我尝试读取文件,还有描述为以下关于阅读文件

代码一个奇怪的结果是

f1=file('u1.base') 
for line in f1.readlines()[0:5]: 
print line  
train=f1.readlines() 
f2=file('u1.test') 
test=f2.readlines() 
l_train=len(train) 
l_test=len(test) 
print l_train,l_test 

结果是

1 1 5 874965758 

1 2 3 876893171 

1 3 4 878542960 

1 4 3 876893119 

1 5 3 889751712 

0 20000 

这表明那列车的长度是0.我不知道原因。希望你能帮助我〜

+0

第一,不能明确地破译,解决这个问题。第二:u1.base中有多少行?你正在阅读“f1.readlines()[0:5]” – ZalewaPL

回答

1

第一个f1.readlines()读取所有行(文件位置在文件末尾)。第二个f1.readlines()立即遇到EOF并返回空列表。您可以拨打f1.seek(0)将文件位置移动到文件的开头。

为只读5行:

所有的代码已经失去了正确的缩进的
from itertools import islice 

for line in islice(f1, 5): 
    print line, 
+0

中的所有文件,或者如果你要将整个文件读入内存,只做一次,然后打印前5行。 – geoffspear

+0

@Wooble:'islice(f1,5)'只读5行。它不会将所有文件读入内存。如果你在谈论'f1.readlines()',那么在答案中“读取所有行”意味着整个文件被读入内存。 – jfs

+0

我的意思是OP打算在打印前5行后将整个文件读入内存,因此没有真正的理由要先读取前5行,然后立即再读取它们。 – geoffspear