Python中列表上的For循环

2024-09-25 12:25:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个train_file.txt,每行有3列

比如,

1 10 1

1 12 1

2 64 2

6 17 1

...

我正在读这个txt文件

train_data = open("train_file.txt", 'r').readlines()

然后我尝试用for循环得到每个值

for eachline in train_data:
    uid, lid, x = eachline.strip().split()

问题:列车数据是一个巨大的文件,这就是为什么我只想获取前1000行

我试图执行以下代码,但出现错误('list'对象不能解释为整数)

for eachline in range(train_data,1000)
        uid, lid, x = eachline.strip().split()

Tags: 文件intxtforuiddatatrainopen
3条回答

也许可以试着改变这一行:

train_data = open("train_file.txt", 'r').readlines()

致:

train_data = open("train_file.txt", 'r').readlines()[:1000]

根本不需要读取整个文件。您可以直接在文件上使用enumerate,并提前中断或使用^{}

from itertools import islice

train_data = list(islice(open("train_file.txt", 'r'), 1000))

您也可以在以后继续使用相同的文件句柄来读取更多数据:

f = open("train_file.txt", 'r')
train_data = list(islice(f, 1000)) # reads first 1000
test_data = list(islice(f, 100))   # reads next 100

train_data是一个列表,请使用切片: for eachline in train_data[:1000]:

用你的话来说,文件是“巨大的”,更好的方法是只读取前1000行(readlines()将在内存中读取整个文件)

with open("train_file.txt", 'r'):
    train_data = []
    for idx, line in enumerate(f, start=1):
        train_data.append(line.strip.split())
        if idx == 1000:
            break

注意,数据将是str,而不是int。您可能希望将它们转换为int

相关问题 更多 >