отлично работает для меня:
"X Coordinate" "," "Y Coordinate" "," "Who"
-11.273903984790302 "," 11.589865065737627 "," 60
-3.198704310517442 "," -2.327808927515365 "," 6
13.485197306065764 "," -3.747989432973762 "," 91
16.085782333733263 "," 13.530031781112555 "," 35
...
Кстати, вы должны использовать file-type
вместо file-write
для записи в файл без добавления новой строки.
file-write
делает странные вещи, такие как кавычки во всех строках (поэтому запятые являются кавычками в вышеприведенном выходе).
Еще лучше, вы должны использовать word
, чтобы объединить строки вместо file-write
(или file-type
) снова и снова. Я хотел бы написать этот код так:
to check
create-inboxturtles 100[setxy random-xcor random-ycor]
file-open "D:\\hello.csv"
file-print "X Coordinate,Y Coordinate,Who"
ask inboxturtles [
file-print (word xcor "," ycor "," who)
]
file-close
end
Это выводит:
X Coordinate,Y Coordinate,Who
-5.409837709344972,-0.6301891295194455,165
15.024747417946124,-9.591123025568086,193
9.735972095912903,-3.935540025692582,176
-11.505336629875304,-12.082889705829679,103
-10.19902536584426,-14.86360155896942,85
-5.928287603043071,7.175770417278386,22
-10.538908046584938,-15.009427435006804,120
...
, который, вероятно, больше того, что вы хотите. Кстати, в CSV нормально иметь пробелы в строках, не помещая кавычки вокруг них. Единственный раз, когда вам нужны кавычки, - это когда сами строки содержат запятые.
Наконец, обратите внимание, что если файл уже существует, он будет просто добавлен, а не перезаписан. Поэтому вам может понадобиться что-то вроде if file-exists? filename [ file-delete filename ]
до file-open
.
Код выглядит корректно для меня. Какие у вас есть доказательства того, что это не работает? Как выглядит результирующий файл? –
В этой проблеме возникла проблема с моим редактором в Windows. –
Ах, дубликат http://stackoverflow.com/q/3455089/86485, затем –