Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 关于读取文件_Python_Python 2.7 - Fatal编程技术网

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))
而不是
打印行,
。也许那只是我的口味。。。