如何在Python中将文件追加到列表中?

时间:2016-01-23 16:44:02

标签: python list python-3.x append

我有一个名为'scores.txt'的示例文件,其中包含以下值:

10,0,6,3,7,4

我希望能够以某种方式从该行中获取每个值,并将其附加到列表中,使其变为sampleList = [10,0,6,3,7,4]

我已尝试使用以下代码

执行此操作
score_list = []

opener = open('scores.txt','r')

for i in opener:
    score_list.append(i)

print (score_list)

部分有效,但由于某种原因,它没有正确地执行。它只是将所有值都粘贴到一个索引而不是单独的索引中。如何才能将所有值放入各自的索引中?

3 个答案:

答案 0 :(得分:3)

您有CSV数据(以逗号分隔)。最简单的方法是使用csv module

import csv

all_values = []

with open('scores.txt', newline='') as infile:
    reader = csv.reader(infile)
    for row in reader:
        all_values.extend(row)

否则,拆分值。您读取的每一行都是一个字符串,其中包含数字之间的','字符:

all_values = []

with open('scores.txt', newline='') as infile:
    for line in infile:
        all_values.extend(line.strip().split(','))

无论哪种方式,all_values都会以字符串列表结束。如果您的所有值都只包含数字,则可以将它们转换为整数:

all_values.extend(map(int, row))

all_values.extend(map(int, line.strip().split(',')))

答案 1 :(得分:2)

如果不使用任何外部包,这是一种有效的方法:

with open('tmp.txt','r') as f:
    score_list = f.readline().rstrip().split(",")

# Convert to list of int
score_list = [int(v) for v in score_list]

print score_list

答案 2 :(得分:2)

只需在每行的逗号上使用split,然后将返回的列表添加到score_list,如下所示:

opener = open('scores.txt','r')
score_list = []

for line in opener:
    score_list.extend(map(int,line.rstrip().split(',')))

print( score_list )