Добавление новых «столбцов» в файл данных CSV в Tcl - PullRequest
1 голос
/ 05 мая 2010

Я имею дело с «большими» данными измерений, значение ключа примерно 30К пар. Измерения имеют количество итераций. После каждой итерации создается файл данных (не CSV) с парами kay-value 30 КБ. Я хочу как-то создать CSV-файл формы:

Key1,value of iteration1,value of iteration2,...
Key2,value of iteration1,value of iteration2,...
Key2,value of iteration1,value of iteration2,...
...

Теперь мне хотелось бы узнать, как эффективно добавить каждое итерационное измерение. данные в виде столбцов в CSV-файл в Tcl. Так что, похоже, что в любом случае я нужно будет загрузить весь CSV-файл в некоторую переменную (массив / список) и работать над каждый элемент путем добавления новых данных измерений. Это кажется несколько неэффективным. Возможно, есть другой способ?

1 Ответ

2 голосов
/ 05 мая 2010

Поскольку файлы CSV являются в основном текстовыми файлами, вам необходимо загрузить все данные и снова записать их. Другого способа увеличить количество столбцов не существует, так как данные в основном являются строками строк. Самый простой способ сделать то, что вы хотите (в конце концов, 30 тыс. Пар - это не , а много), это использовать пакет csv для выполнения анализа Этот код может сделать то, что вы ищете ...

package require csv
package require struct::matrix

# Load the file into a matrix
struct::matrix data
set f [open mydata.csv]
csv::read2matrix $f data , auto
close $f

# Add your data
set newResults {}
foreach key [data get column 0] {
    lappend newResults [computeFrom $key]; # This is your bit!
}
data add column $newResults

# Write back out again
set f [open mydata.csv w]
csv::writematrix data $f
close $f

Возможно, вам лучше использовать базу данных. И metakit , и sqlite3 очень хорошо работают с Tcl и хорошо справляются с такой задачей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...