2017-02-14 5 views
0

私は非常に愚かな質問をしている場合は、私は非常にPythonに新しいですので、私と一緒にご負担ください。私は周りを見ているが、おそらく私はこれを修正する方法を理解していない。Python - f.out filename

私は、CSVファイルを読み込み、値を見つけて置き換えてからファイルに書き込むスクリプトを実行しています。 CSVファイルには「n」個の行が含まれており、行ごとに別のファイルを作成し、「行3」の値と値を置き換える必要があります。しかし、私がスクリプトを実行すると、最終行の出力ファイルが1つしか得られません。以下は私のスクリプトです。

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_ messed-upになっています。 – 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

関連する問題