Python 关于读取文件
当我尝试读取一个文件时,会出现如下所述的奇怪结果 代码是Python 关于读取文件,python,python-2.7,Python,Python 2.7,当我尝试读取一个文件时,会出现如下所述的奇怪结果 代码是 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
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。我不知道原因。希望您能帮助我~第一个
f1.readlines()
读取所有行(文件位置在文件末尾)。第二个f1.readlines()
立即遇到EOF并返回空列表。您可以调用f1.seek(0)
将文件位置移动到文件的开头
要仅读取5行,请执行以下操作:
from itertools import islice
for line in islice(f1, 5):
print line,
首先,您的代码已经丢失了正确的缩进,无法明确地破译,请修复此问题。第二:u1.base中有多少行?您正在“f1.readlines()[0:5]”中读取所有文件,或者如果要将整个文件读入内存,请只执行一次,然后打印前5行。@Wooble:
islice(f1,5)
仅读取5行。它不会将所有文件读入内存。如果你说的是f1.readlines()
,那么答案中的“reads all lines”强烈暗示整个文件都被读入内存。我的意思是OP计划在打印前5行之后将整个文件读入内存,所以没有真正的理由把前5行读一遍,然后马上再读一遍。我不知道你的情况,但我一直更喜欢sys.stdout.write(str(line))
而不是打印行,
。也许那只是我的口味。。。