Python - f.out文件名

时间:2017-02-14 22:58:44

标签: python

我是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()

请有人帮忙,告诉我这里做错了什么。

感谢,

1 个答案:

答案 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 ]

这不会解决所有问题(为了了解更多,我们需要您首先修复缩进,以便了解您可能尝试的内容),但这可能是一个开始。