itertools不迭代tsv文件行号

时间:2015-10-01 06:07:42

标签: python itertools

我有一个包含100000行数据的tsv。当我放n_rating=55555时,它进入下面的代码的for循环。但是当我使用文件的行长时,它不会进入循环,而不是一次。

with open("u.data") as tsv1:
    n=sum([1 for _ in tsv1 ])
    print n
    for line in itertools.islice( csv.reader(tsv1, dialect="excel-tab"),0, int(0.8*n)):
        print "iterating loop" #does not print when n is line size
                               #prints when n    

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您拥有的代码是尝试两次读取文件。计算行数后,文件指针位于文件的末尾。通过添加seek(0),您可以再次移动到文件的开头。

with open("u.data") as tsv1:
    n = sum([1 for _ in tsv1])
    print n
    tsv1.seek(0)

    for line in itertools.islice( csv.reader(tsv1, dialect="excel-tab"),0, int(0.8*n)):
        print "iterating loop" #does not print when n is line size
                               #prints when n