2015-09-22 35 views
1

我對NetLogo非常陌生,並試圖導入帶有狀態座標的CSV。我用這裏給出的代碼,它工作正常。唯一的問題是我必須關閉Netlogo並運行我的代碼才能獲得我的輸出。如果我再次運行它,它不起作用,除非我關閉軟件!NetLogo在每次運行之前都無法加載CSV

我調試了我的代碼,並意識到它不會爲多次運行輸入while [not file-at-end?]循環。這是奇怪的行爲。我初始化了所有的列表和變量,並重置了所有的列表和變量。任何幫助表示讚賞。

我的代碼:

to load-physician-file 

    file-open "Physician-File.csv" 

    while [not file-at-end?] 
    [ 
    set csv file-read-line 
    set csv word csv "," 

    set fileList[] 

    while [not empty? csv] 
    [ 
    let $x position "," csv 
    let $item substring csv 0 $x 
    carefully [set $item read-from-string $item] [] 
    set fileList lput $item fileList 
    set csv substring csv ($x + 1) length csv 
    ] 

    set State-abbrev item 0 fileList 

    if label-states 
    [ 
    create-state-labels 1 
    [ 
     set xcor (item 2 filelist - 1.6) 
     set ycor (item 1 fileList - 1.6) 
     set size 0 
     set label item 0 fileList 
    ] 
    ] 
    ] 
    file-close 
end 
+1

你說'這裏給出的代碼',但實際上並沒有提供代碼 – JenB

+0

'這裏給出的代碼',我的意思是stackoverflow。有一個流行的代碼,我發現。我編輯了問題以包含代碼。 –

+0

stackoverflow非常龐大,可能有多個代碼在NetLogo中打開文件。好的做法是展示代碼(如你現​​在所做的那樣),並鏈接到你找到它的問題。這樣,你的問題和原始鏈接就可以聯繫起來,以便其他人可以在兩個問題上找到討論。 – JenB

回答

1

我強烈懷疑你缺少一個file-closefile-close-all

也許與預期相反,clear-all不會關閉文件,file-open也不會返回到已打開文件的開頭。

+0

我也使用了file-close。 –

+0

在'file-open'之前在'load-physician-file'的頂部添加'file-close-all'不能解決它? –

+0

好的。有用! [file-close-all]在[file-open]語句之前有效。如果[file-close-all]在結束語句之前,它不起作用。謝謝你的幫助! –

相關問題