2017-02-14 73 views
0

我對Python很新,所以請耐心等待我提出一個非常愚蠢的問題。我環顧四周,但可能我不理解如何解決這個問題。Python - f.out文件名

我正在運行腳本來讀取CSV文件,查找並替換值,然後寫入文件。 CSV文件包含'n'行數,並且對於每一行,需要創建一個不同的文件,並附加「行3」中的值,並替換值。但是,當我運行腳本時,我只得到一個輸出文件,它是最後一行。以下是我的腳本。

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

請有人可以幫忙,並建議我在做什麼錯在這裏。

感謝,

+4

請修復縮進 –

+0

您的代碼的縮進是_still_搞砸了,因爲您使用製表符而不是空格來執行縮進。謝謝, – martineau

+0

會試圖糾正這些。 – geeksy

回答

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 ] 

這不會解決所有問題(爲了解更多,我們需要您先解決壓痕,以瞭解你可以嘗試),但它可能是一個開始。

+0

感謝Alfe,會給我一個嘗試併發回我得到的。 – geeksy