writeall

Запишите datastore в файлы

Описание

пример

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

пример

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

Примеры

свернуть все

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

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

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

Предварительно просмотрите datastore.

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'}    

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

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

Очистите ds из вашей рабочей директории. Чтобы восстановить datastore с диска, создайте новый datastore, который ссылается на ту же папку, где данные были записаны.

clear ds
ds2 = datastore(location);

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

Создайте datastore изображений из местоположения 'C:\input\', который содержит некоторые изображения автомобилей и обучается:

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

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

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

imds.Folders
ans =

  1×1 cell array

    {'C:\input\'}

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

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

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

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

Для получения дополнительной информации смотрите FolderLayout.

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

Создайте datastore изображений из местоположения 'C:\input\', который содержит некоторые изображения автомобилей и обучается:

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

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

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

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

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

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

Входные параметры

свернуть все

Введите datastore. Можно использовать эти хранилища данных в качестве входа к writeall:

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

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

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

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

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

Аргументы name-value

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

Пример: writeall(ds,outputLocation,'FolderLayout','flatten')
Общие опции

свернуть все

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

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

Введите Datastore

'OutputFormat'

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

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

'OutputFormat' Пары "имя-значение"

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 свойство входного datastore.

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

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

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

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

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

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

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

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

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

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

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

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

  • Parallel Computing Toolbox™ установлен.

  • Открытый параллельный пул существует, или автоматическое создание пула включено в Параллельных Настройках.

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

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

Примечание

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

Типы данных: логический

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

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

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

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

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

  • data содержит выход read метод, работающий с datastore.

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

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

Функция, взятая в качестве примера,

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

function myParquetWriteFcn(data, writeInfo, outputType)
if strcmp(outputType,"parquet")
  parquetwrite(writeInfo.SuggestedOutputName,data)
end
end
Вызвать myParquetWriteFcn как запись функционируют для datastore 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' и любой true или false.

  • Если 'QuoteStrings' true, затем функция заключает текст в символы двойной кавычки и заменяет любой сопроводительный текст символов двойной кавычки на два символа двойной кавычки. Два символа двойной кавычки также упоминаются как оставленные символы.

  • Если 'QuoteStrings' false, затем текст записан без изменения.

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

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

Опции для xls или xlsx Вывод

свернуть все

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

Задайте рабочий лист, чтобы записать в по наименованию или индекс:

  • имя — Если заданное имя листа не существует в файле, то функция записи добавляет новый лист в конце набора рабочего листа.

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

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

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

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

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

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

Введенный в R2020a