exponenta event banner

writeall

Запись хранилища данных в файлы

Описание

пример

writeall(ds,outputLocation) записывает данные из хранилища входных данных ds для вывода файлов в расположение, указанное в outputLocation. Количество выходных файлов совпадает с количеством файлов, на которые ссылается хранилище данных.

пример

writeall(ds,outputLocation,Name,Value) записывает данные с дополнительными параметрами, заданными одним или несколькими аргументами пары имя-значение. Например, можно указать 'OutputType' и расширение файла, например 'csv' для указания типа файлов, writeall создает.

Примеры

свернуть все

Запишите хранилище данных на диск, а затем создайте новое хранилище данных для записанных файлов. Этот процесс полезен для сохранения работы или совместного использования хранилища данных с коллегой.

Создание хранилища данных для airlinesmall.csv набор данных, обработка 'NA' значения как отсутствующие данные. Выберите только Year, Month, и Carrier переменные.

ds = datastore('airlinesmall.csv');
ds.TreatAsMissing = 'NA';
ds.SelectedVariableNames = {'Month','Year','UniqueCarrier'};

Предварительный просмотр хранилища данных.

preview(ds)
ans=8×3 table
    Month    Year    UniqueCarrier
    _____    ____    _____________

     10      1987       {'PS'}    
     10      1987       {'PS'}    
     10      1987       {'PS'}    
     10      1987       {'PS'}    
     10      1987       {'PS'}    
     10      1987       {'PS'}    
     10      1987       {'PS'}    
     10      1987       {'PS'}    

Сохранить это хранилище данных в новой папке с именем ExampleData на C:\ диск. (Можно указать другое место записи, особенно если вы не используете компьютер Windows ®.) Определить'FolderLayout' как 'flatten' для размещения файлов хранилища данных непосредственно в целевой папке без создания вложенных папок.

location = 'C:\ExampleData';
writeall(ds,location,'Folderlayout','flatten')

Ясно ds из рабочего каталога. Чтобы восстановить хранилище данных с диска, создайте новое хранилище данных, которое ссылается на ту же папку, в которую были записаны данные.

clear ds
ds2 = datastore(location);

При записи хранилища данных в файлы можно выбрать дублирование или распрямление структуры папок, задав 'FolderLayout' параметр. Создайте хранилище данных образа из местоположения ввода, а затем запишите его в файлы. Затем запишите файлы в месте вывода, продублировав макет папки. Наконец, запишите файлы в виде плоского списка в расположение вывода.

Создание хранилища данных образа из расположения 'C:\input\', который содержит некоторые изображения вагонов и поездов:

imds = imageDatastore('C:\input\','IncludeSubfolders',true);

Эта структура папок является лишь примером. Можно попробовать эту функцию с помощью структуры папок на компьютере, содержащей файлы изображений.

Осмотрите Folders свойство хранилища входных данных, которое содержит полный путь к набору входных данных.

imds.Folders
ans =

  1×1 cell array

    {'C:\input\'}

Запись хранилища данных в расположение вывода 'C:\output\'. Значение по умолчанию для 'FolderLayout' параметр имеет значение 'duplicate'. Следовательно, writeall функция дублирует все папки, содержащиеся в Folders свойство хранилища входных данных, а затем записывает файлы в соответствующие папки вывода.

writeall(imds,'C:\output\');

Теперь запишите файлы из хранилища данных в расположение вывода 'C:\output\' в виде плоского списка путем установки 'FolderLayout' кому 'flatten'. В этом случае writeall функция не сохраняет макет папки ввода и вместо этого записывает все файлы в плоское расположение вывода.

writeall(imds,'C:\output\','FolderLayout','flatten');

Дополнительные сведения см. в разделе Компоновка папки.

Вы можете использовать FilenamePrefix и FilenameSuffix параметры для добавления текста в начало или конец имен выходных файлов. Создайте хранилище данных изображения из расположения ввода. Запишите хранилище данных в файлы и добавьте текст в начало имен файлов. Затем снова запишите хранилище данных и добавьте текст в конец имен файлов.

Создание хранилища данных образа из расположения 'C:\input\', который содержит некоторые изображения вагонов и поездов:

imds = imageDatastore('C:\input\','IncludeSubfolders',true);

Эта структура папок является лишь примером. Можно попробовать эту функцию с помощью структуры папок на компьютере, содержащей файлы изображений.

Теперь запишите файлы в папку вывода. Укажите значение FilenamePrefix как 'png_' для добавления этого текста в начало каждого имени выходного файла.

writeall(imds,'C:\output\','FilenamePrefix','png_');

Запишите файлы в другое расположение вывода. Укажите значение FilenameSuffix как '_image' для добавления этого текста в конец каждого имени выходного файла.

writeall(imds,'C:\output2\','FilenameSuffix','_image');

Входные аргументы

свернуть все

Хранилище входных данных. Эти хранилища данных можно использовать в качестве входных данных для writeall:

Вы также можете использовать эти хранилища данных с writeall если вы поставляете либо 'OutputFormat' или 'WriteFcn' пара имя-значение:

Расположение папки для записи данных, указанное как вектор символа или скаляр строки. outputLocation может указать полный или относительный путь.

Пример: outputLocation = '../../dir/data'

Пример: outputLocation = "C:\Users\MyName\Desktop"

Типы данных: char | string

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: writeall(ds,outputLocation,'FolderLayout','flatten')
Общие параметры

свернуть все

Формат выходного файла, указанный как разделенная запятыми пара, состоящая из 'OutputFormat' и вектор символов или строковый скаляр.

На основе типа входного хранилища данных dsвыберите одно из этих значений для выходных файлов. Можно выбрать любой табличный формат вывода для любого из перечисленных ниже табличных хранилищ данных.

Хранилище входных данных

Формат вывода

TabulartextDatastore, SpreadsheetDatastore, ParquetDatastore'txt', 'csv', 'xlsx', 'xls', 'parquet', или 'parq'
ImageDatastore'png', 'jpg', 'jpeg', 'tif', или 'tiff'
AudioDatastore'wav', 'ogg', 'flac', 'mp4', или 'm4a'
FileDatastore, TransformedDatastore, CombinedDatastoreПоддерживаются все форматы вывода.

Для некоторых форматов вывода существуют дополнительные пары имя-значение, которые можно использовать для уточнения операции записи.

Формат выводаПары «имя-значение»

jpeg, jpg

'Quality'

wav, flac

'BitsPerSample'

mp4, m4a

'BitRate'

txt, csv

'WriteVariableNames'

'Delimiter'

Кодировка

'QuoteStrings'

xls, xlsx

'Sheet'

Типы данных: char | string

Компоновка файлов в папке вывода, указанная как разделенная запятыми пара, состоящая из 'FolderLayout' и либо 'duplicate' или 'flatten'.

  • 'duplicate'- writeall функция реплицирует структуру папки, содержащуюся в расположении входных данных, в указанное расположение вывода. Местоположение входных данных содержит Folders свойство входного хранилища данных.

  • 'flatten'- writeall функция записывает все файлы из входных данных в указанную папку вывода без вложенных папок.

Типы данных: char | string

Префикс к имени файла, заданному как разделенная запятыми пара, состоящая из 'FilenamePrefix' и вектор символов или строковый скаляр.

writeall добавляет указанный префикс к именам выходных файлов. Например, этот код добавляет текущую дату к началу всех имен выходных файлов из хранилища данных:

prefixText = string(datetime('today'))
writeall(imds,'C:\myFolder','FilenamePrefix',prefixText);

Типы данных: char | string

Суффикс к имени файла, указанный как разделенная запятыми пара, состоящая из 'FilenameSuffix' и вектор символов или строковый скаляр.

writeall функция добавляет указанный суффикс к именам выходных файлов. Например, этот код добавляет описательный текст 'jpeg_70per' до конца всех имен выходных файлов из хранилища данных:

writeall(imds,'C:\myFolder','FilenameSuffix','jpeg_70per');

Типы данных: char | string

Индикатор для параллельной записи, определяемый как разделенная запятыми пара, состоящая из 'UseParallel' и либо false или true (0 или 1).

По умолчанию writeall записывает в последовательном формате. Если установить UseParallel кому true, то writeall разделяет операции записи на отдельные группы и выполняет группы параллельно, если:

  • Установлен Toolbox™ параллельных вычислений.

  • Существует открытый параллельный пул или включено автоматическое создание пула в окне Настройки параллельного пула (Parallel Preferences).

В противном случае writeall записывает в последовательном формате независимо от значения для UseParallel.

writeall не поддерживает параллельную запись через локальные потоки.

Примечание

Параллельная запись не поддерживается для CombinedDatastore объекты или хранилища данных, являющиеся результатом transform применено к CombinedDatastore.

Типы данных: logical

Пользовательская функция записи, заданная как разделенная запятыми пара, состоящая из 'WriteFcn' и дескриптор функции. Указанная функция отвечает за создание выходных файлов.

Вы можете использовать 'WriteFcn' аргумент пары имя-значение для записи данных в различных форматах, даже если writeall не поддерживает формат вывода напрямую.

Функциональная подпись

Пользовательская функция записи должна принимать не менее трех входных аргументов, data, writeInfo, и outputType:

function myWriteFcn(data,writeInfo,outputType)
Функция также может принимать дополнительные входные данные, такие как пары имя-значение, после первых трех требуемых входных данных.

  • data содержит выходные данные read способ работы с хранилищем данных.

  • writeInfo является объектом типа matlab.io.datastore.WriteInfo с полями, перечисленными в таблице.

    ОбластьОписаниеНапечатать
    ReadInfoВторой выход read методstruct
    SuggestedOutputNameПолное, глобально уникальное имя файла, отвечающее требованиям к расположению и именованиюstring
    LocationАргумент местоположения, переданный для записи в хранилище данныхstring
  • outputType - выходной формат для записи, например, "txt" или "csv".

Пример функции

Функция записи, которая записывает файлы паркета из хранилища данных:

function myParquetWriteFcn(data, writeInfo, outputType)
if strcmp(outputType,"parquet")
  parquetwrite(writeInfo.SuggestedOutputName,data)
end
end
Призвать myParquetWriteFcn как функция записи для хранилища данных ds, используйте следующие команды:
ds = parquetDatastore(location);
outputLocation = 'C:/tmp/MyData';
writeall(ds,outputLocation,'WriteFcn',@myParquetWriteFcn);

Типы данных: function_handle

Опции для jpeg или jpg Продукция

свернуть все

Качество файла, сжатого JPEG, указанного как пара, разделенная запятыми, состоящая из 'Quality' и скаляр в диапазоне [0,100], где 0 - более низкое качество и более высокое сжатие, а 100 - более высокое качество и более низкое сжатие.

Пример: 'Quality',25

Опции для wav или flac Продукция

свернуть все

Количество выходных битов на выборку, указанное как разделенная запятыми пара, состоящая из 'BitsPerSample' и 8, 16, 24, 32, или 64.

Только для файлов FLAC 8, 16, или 24 поддерживаются биты на выборку.

Пример: 'BitsPerSample',32

Опции для mp4 или m4a Продукция

свернуть все

Количество килобит в секунду (кбит/с), используемых для сжатых аудиофайлов, указанное как пара, разделенная запятыми, состоящая из 'BitRate' и 64, 96, 128, 160, 192, 256, или 320. В Windows ® 7 или более поздней версии допустимыми являются только следующие значения :96, 128, 160, и 192.

В общем, больше BitRate значение приводит к повышению качества сжатия.

Пример: 'BitRate',96

Опции для txt или csv Продукция

свернуть все

Индикатор для записи имен переменных в виде заголовков столбцов, определяемый как разделенная запятыми пара, состоящая из 'WriteVariableNames' и либо true или false.

Индикатор

Поведение

true

Функция записи включает имена переменных в качестве заголовков столбцов вывода. Это поведение по умолчанию.

false

Функция записи не включает имена переменных в выходные данные.

Символ разделителя поля, указанный как разделенная запятыми пара, состоящая из 'Delimiter' и вектор символов или строковый скаляр, содержащий один из следующих спецификаторов:

Спецификатор

Разделитель поля

','

'comma'

Запятая. Это поведение по умолчанию.

' '

'space'

Пространство

'\t'

'tab'

Счет

';'

'semi'

Точка с запятой

'|'

'bar'

Вертикальная полоса

Вы можете использовать 'Delimiter' пара имя-значение только для текстовых файлов с разделителями.

Пример: 'Delimiter','space'

Типы данных: char | string

Схема кодирования символов, связанная с файлом, заданная как разделенная запятыми пара, состоящая из 'Encoding' и 'system' или имя стандартной схемы кодирования символов, как одно из значений в этой таблице. Если не указать кодировку или указать кодировку как 'system', функция записи использует системную кодировку по умолчанию для записи файла.

'Big5'

'ISO-8859-1'

'windows-874'

'Big5-HKSCS'

'ISO-8859-2'

'windows-949'

'CP949'

'ISO-8859-3'

'windows-1250'

'EUC-KR'

'ISO-8859-4'

'windows-1251'

'EUC-JP'

'ISO-8859-5'

'windows-1252'

'EUC-TW'

'ISO-8859-6'

'windows-1253'

'GB18030'

'ISO-8859-7'

'windows-1254'

'GB2312'

'ISO-8859-8'

'windows-1255'

'GBK'

'ISO-8859-9'

'windows-1256'

'IBM866'

'ISO-8859-11'

'windows-1257'

'KOI8-R'

'ISO-8859-13'

'windows-1258'

'KOI8-U'

'ISO-8859-15'

'US-ASCII'

 

'Macintosh'

'UTF-8'

 

'Shift_JIS'

 

Пример: 'UTF-8'

Типы данных: char | string

Индикатор для записи текста в кавычках, указанный как разделенная запятыми пара, состоящая из 'QuoteStrings' и либо false или true. Если 'QuoteStrings' является true, то функция записи заключает текст в двойные кавычки и заменяет любые символы двойной кавычки, которые появляются как часть этого текста, двумя символами двойной кавычки.

Вы можете использовать 'QuoteStrings' пара имя-значение только с разделителями текстовых файлов.

Опции для xls или xlsx Продукция

свернуть все

Лист для записи, указанный как разделенная запятыми пара, состоящая из 'Sheet' и вектор символов или строковый скаляр, содержащий имя листа или положительное целое число, указывающее индекс листа. Имя листа не может содержать двоеточие (:). Чтобы определить имена листов в файле электронной таблицы, используйте sheets = sheetnames(filename). Дополнительные сведения см. в разделе sheetnames.

Укажите лист для записи по имени или индексу:

  • name - если указанное имя листа не существует в файле, функция записи добавляет новый лист в конце коллекции листов.

  • index - если указанный индекс листа больше числа листов, функция записи добавляет пустые листы до тех пор, пока число листов в книге не станет равным индексу листа. Функция записи также генерирует предупреждение, указывающее на добавление нового документа.

Вы можете использовать 'Sheet' пара имя-значение только с файлами электронных таблиц.

Пример: 'Sheet',2

Пример: 'Sheet', 'MySheetName'

Типы данных: char | string | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Расширенные возможности

См. также

| | | | | (Панель звуковых инструментов)

Представлен в R2020a