如何在Python中编写有效的readline代码

时间:2019-03-29 07:52:50

标签: python while-loop readline

尝试一次打开和读取txt文件中的一行,同时收集信息并随手建立列表。

所以我看起来像这样:

name_list = []
rating_list = []
price_list = []
cuisine_list = []
end_list = []

filename = '/Users/anqixiao/Desktop/restaurant recommendation/restaurants_small.txt'
file = open(filename, 'r')
line = file.readline()

while line != '':
    name_list.append(line.strip('\n'))
    rating_list.append(line.strip('\n'))
    price_list.append(line.strip('\n'))
    cuisine_list.append(line.strip('\n'))
    end_list.append(line.strip('\n'))
file.close()

但是,当我手动进入while循环时,Python Shell已经停止响应。有人可以告诉我我哪里出问题了吗?我真的很感激!

非常感谢。

4 个答案:

答案 0 :(得分:0)

line = file.readline()将从txt文件读取一行,但是当您进入while循环时,您不会再读取其余的行,并且您正在输入一个无休止的循环。这就是为什么您会出错。 file.readline()

之后,将行= while line != '':放入while循环内

答案 1 :(得分:0)

更省钱的方法是:

name_list = []
rating_list = []
price_list = []
cuisine_list = []
end_list = []

filename = '/Users/anqixiao/Desktop/restaurant recommendation/restaurants_small.txt'

with open (filename, 'r') as file:
    lines = file.readlines()


for line in lines:
    if line != '':
        name_list.append(line.strip('\n'))
        rating_list.append(line.strip('\n'))
        price_list.append(line.strip('\n'))
        cuisine_list.append(line.strip('\n'))
        end_list.append(line.strip('\n'))

使用您允许文件包含空行的内容,然后跳过它们。但是正如我的评论中所述,您的实际问题是永无休止的while循环。

答案 2 :(得分:0)

line是指文档的第一行。如果它不是一个空字符串,除非更改,否则它将始终为true。要为每一行更改它,您只需将line = file.readline()放在while循环的结尾

请注意,file.readlines()会将file中的每一行读入一个列表。 file.readlines().splitlines()可以为您做剥离

答案 3 :(得分:0)

读取文件如下:

with open(filename, 'r') as f:
    for line in f:
        #do something

如果每行都有每个项目,例如:“名称,评分,价格,美食,结束”, 您可以使用split来获取物品
如果内容行类似:“名称\ n评分\ n价格\ n美食\ n结束”,则可能有效

with open(filename, 'r') as f:
    for idx, line in enumerate(f):
        line = line.strip('\n')
        if idx % item_nums == 0:
            name_list.append(line)
        # other case