Самый быстрый метод для добавления значений в экспортированный .dat - PullRequest
2 голосов
/ 01 февраля 2012

В настоящее время я пытаюсь написать небольшую функцию экспорта, однако у меня возникла проблема при попытке получить правильный формат экспорта. Функции LoadElements просто генерируют систематические списки (из 200 парных элементов) .

elements = Table[LoadElements[X], {10}];
Export["C:\\Exports\\elements.dat", elements]

Таким образом, я получаю желаемый формат, и функция работает быстро: для каждого списка новая строка; Пример:
{List1Element1, List1Element2 ...}
{List2Element1, List2Element2 ...}
Проблема: с помощью функции экспорта я не могу добавить новый файл в файл.

Чем я пытался работать с потоками: Однако: 1. Он значительно медленнее, чем код экспорта, 2. Я не смог получить правильный формат:

Do[
file = OpenAppend["C:\\Exports\\elements.dat", PageWidth -> Infinity];
Write[file, elemnts = Table[LoadElements[X], {2}]];
Close[file];
, {2}];

PageWidth Infinity была необходима, потому что в противном случае были разрывы строк, но это дает мне следующий формат:
{List1} {List2}
{List3} {List4}
и это довольно медленно ..

Я был бы благодарен за идею, как можно легко добавлять значения в файл с требуемым форматом таблицы.


спасибо большое, как правило, работает.

К сожалению, это приводит к дополнительному разрыву пустой строки между каждой парой значений, есть идеи, почему? Так что это производит:
Resultpair

Resultpair
вместо:
Resultpair
Resultpair
Я имею в виду, что я могу вручную избавиться от пустой строки с помощью другого скрипта, однако было бы неплохо получить правильный вывод напрямую:)

1 Ответ

3 голосов
/ 01 февраля 2012

Вы можете рассмотреть комбинацию ExportString (поскольку Export уже производит желаемый формат) и WriteString:

elements1 = RandomInteger[99, {15, 2, 5}];

elements2 = RandomInteger[99, {15, 3, 3}];

Export["elements.dat", elements1]

file = OpenAppend["elements.dat"];
WriteString[file, "\n", ExportString[elements2, "Table"]]
Close[file]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...