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, Month, и 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 свойство input 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 должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

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

свернуть все

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

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

Входной параметр Datastore

Выход

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' - The writeall функция реплицирует структуру папки, содержащуюся в расположении входных данных, в указанное выходное расположение. Расположение входных данных содержит Folders свойство входного datastore.

  • 'flatten' - The 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™.

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

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

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

Примечание

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

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

Пользовательская функция записи, заданная как разделенная разделенными запятой парами, состоящая из '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Аргумент местоположения передан в datastore writestring
  • 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' и любой из них false или true. Если 'QuoteStrings' является true, затем функция записи заключает текст в двойные кавычки и заменяет любые символы с двойной кавычкой, которые появляются как часть этого текста, два символов с двойной кавычкой.

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

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

свернуть все

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

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

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

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

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

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

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

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

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

Введенный в R2020a