我是Python的新手,所以如果我问一个非常愚蠢的问题,请耐心等待。我环顾四周,但可能我不明白如何解决这个问题。
我正在运行一个脚本来读取CSV文件,查找并替换值,然后写入文件。 CSV文件包含' n'行数和每行需要创建一个不同的文件,并附加"第3行和第34行中的值,并替换值。但是,当我运行脚本时,我只获得一个输出文件,该文件用于最后一行。以下是我的剧本。
file_reader= open('variables.csv', "rt")
read = csv.reader(file_reader)
for row in read:
values = { '[type]':row[0], '[model]':row[1], '[name]':row[2],'[host]':row[3] }
if row[0] == "1":
if row[1] == "alpha":
t = open("alpha.conf", "r")
elif row[1] == "beta":
t = open("beta.conf", "r")
def replace_words(base_text, device_values):
temp = t.read()
t.close()
output = replace_words(temp, values)
outputfile = "host"+row[3]+".txt"
fout = open(outputfile,'w')
fout.write(output)
fout.close()
请有人帮忙,告诉我这里做错了什么。
感谢,
答案 0 :(得分:0)
问题从此代码开始:
for row in read:
values = {
'[type]': row[0],
'[model]': row[1],
'[name]': row[2],
'[host]': row[3] }
您为每一行执行分配,但是您将创建的所有好字典分配给同一变量values
。当然,最后一行最后只有values
。
您可以使用列表推导创建值列表:
values = [ { '[type]': row[0],
'[model]': row[1],
'[name]': row[2],
'[host]': row[3] } for row in read ]
这不会解决所有问题(为了了解更多,我们需要您首先修复缩进,以便了解您可能尝试的内容),但这可能是一个开始。