itertools 不迭代 tsv 文件行号

itertools not iterating for tsv files line number

我有一个包含 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    

我做错了什么?

您拥有的代码正在尝试读取文件两次。计算完行数后,文件指针位于文件末尾。通过添加 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