2016-05-11 4 views
0

これは本当に簡単ですが、私はまだnoobですので、私は立ち往生しています。Python csvファイル/ next()/ whileループ

whileループは一定の時間ステップで実行されています。私はcsvファイルからいくつかの変数を挿入したい、csvファイルのすべてのセルには3つの整数(x、y、angle)があり、シミュレーションにパスして渡す必要があります。

これは私の試みですが、私はまだ多くを学ぶ必要がありますが、多分誰かがこの問題で私を助けることができます。

...........step = 0 
while traci.simulation.getMinExpectedNumber() > 0: 
     simulationStep() 
     with open('myfile.csv', 'r') as f: 
     lines = f.next() 
     new = lines.split(",",) 
     x = new[0] 
     y = new[1] 
     angle = new[2] 

     vehicle.moveTo(vehid01, x, y, angle) 
     step += 1........ 

タイムステップごとに1行を保存したいと思います。これらの変数を渡します。だから、次のタイムステップが始まると、csvファイルの次の行が読み込まれ、渡されます。新しいタイムステップ、新しいラインは動作しません。x、yの値は変更されません。

提案がありますか?あなたの助けをありがとう

+2

あなたはwhileループの外側でファイルを開くことを意図していると思いますので、毎回新しい行を取得します。 – L3viathan

+0

myfile.csvを開き、1行を読み込んだ後に繰り返し*ファイル*を開いて同じ行を読み込み、ファイルを再度開く、同じ行を読み込みます。ループ。 – Evert

+0

素晴らしい作品ありがとう:) –

答えて

0

これは機能しますか?

...........step = 0 

with open('myfile.csv', 'r') as f: 
    while traci.simulation.getMinExpectedNumber() > 0: 
     simulationStep() 
     lines = next(f) # compatible with Python 3 
     new = lines.split(",") 
     x = new[0] 
     y = new[1] 
     angle = new[2] 

     vehicle.moveTo(vehid01, x, y, angle) 
     step += 1........ 
+0

甘いありがとうございます*花を送る –

0

あなたは構文解析を委任するcsvモジュールを使用することができます。

import csv 
with open('myfile.csv') as f: 
    step = 0 
    reader = csv.reader(f) 
    while traci.simulation.getMinExpectedNumber() > 0: 
     simulationStep() 
     x, y, angle = [float(i) for i in next(reader)] # reader.next() for 2.x 
     vehicle.moveTo(vehid01, x, y, angle) 
     step += 1