matlab.io.datastore. Класс DsFileSet

Пакет: matlab.io.datastore

Установленный на файл объект для набора файлов в datastore

Описание

Объект DsFileSet помогает вам справиться с итеративной обработкой большого количества файлов. Используйте объект DsFileSet вместе с объектом DsFileReader управлять и считать файлы из вашего datastore.

Конструкция

fs = matlab.io.datastore.DsFileSet(location) возвращает объект DsFileSet для набора файлов на основе заданного location.

fs = matlab.io.datastore.DsFileSet(location,Name,Value) задает дополнительные параметры для объекта DsFileSet с помощью одного или нескольких аргументов пары "имя-значение". Name также может быть именем свойства, и Value является соответствующим значением. Имя должно находиться внутри одинарных кавычек (' '). Можно задать несколько аргументов пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN.

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

развернуть все

Файлы или папки, чтобы включать в установленный на файл объект, заданный как вектор символов, массив ячеек из символьных векторов, строка или struct. Если файлы не находятся в текущей папке, то location должен быть полными или относительными путями. Файлы в подпапках заданной папки автоматически не включены в установленный на файл объект.

Обычно для рабочего процесса Hadoop®, когда вы задаете location как struct, он должен содержать поля FileName, Offset и Size. Это требование позволяет вам использовать аргумент location непосредственно с методом initializeDatastore класса matlab.io.datastore.HadoopLocationBased. Для примера смотрите, Добавляет Поддержка Hadoop.

Можно использовать подстановочный символ (*) при определении location. Определение этого символа включает все файлы соответствия или все файлы в соответствующих папках в установленном на файл объекте.

Если файлы не доступны локально, то полный путь файлов или папок должен быть интернационализировавшим идентификатором ресурса (IRI), такой как
hdfs://hostname:portnumber/path_to_file.

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

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

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

Пример: 'FileExtensions',{'.jpg','.tif'} включает все файлы с .jpg или расширением .tif в объекте FileSet.

Расширения файла, заданные как пара, разделенная запятой, состоящая из 'FileExtensions' и вектора символов, массива ячеек из символьных векторов или строки. Можно использовать пустые кавычки '', чтобы представлять файлы без расширений.

Если 'FileExtensions' не задан, то DsFileSet автоматически включает все расширения файла.

Пример: 'FileExtensions','.jpg'

Пример: 'FileExtensions',{'.txt','.csv'}

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

Флаг включения подпапки, заданный как пара, разделенная запятой, состоящая из 'IncludeSubfolders' и true или false. Задайте true, чтобы включать все файлы и подпапки в каждой папке или false, чтобы включать только файлы в каждой папке.

Пример: 'IncludeSubfolders',true

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

Альтернативные пути к корню файловой системы, заданные как пара, разделенная запятой, состоящая из 'AlternateFileSystemRoots' и вектора строки или массива ячеек. Используйте 'AlternateFileSystemRoots', когда вы создадите datastore на локальной машине, но должны будете получить доступ и обработать данные на другой машине (возможно различной операционной системы). Кроме того, когда обработка данных с помощью Parallel Computing Toolbox™ и MATLAB® Parallel Server™ и данных хранится на локальных машинах с копией доступных данных на облаке другой платформы или кластерных машинах, необходимо использовать 'AlternateFileSystemRoots', чтобы сопоставить корневые пути.

  • Чтобы сопоставить набор корневых путей, которые эквивалентны друг другу, задайте 'AlternateFileSystemRoots' как вектор строки. Например,

    ["Z:\datasets","/mynetwork/datasets"]

  • Чтобы сопоставить несколько наборов корневых путей, которые эквивалентны для datastore, задайте 'AlternateFileSystemRoots' как массив ячеек, содержащий несколько строк, где каждая строка представляет набор эквивалентных корневых путей. Задайте каждую строку в массиве ячеек или как вектор строки или как массив ячеек из символьных векторов. Например:

    • Задайте 'AlternateFileSystemRoots' как массив ячеек векторов строки.

      {["Z:\datasets", "/mynetwork/datasets"];...
       ["Y:\datasets", "/mynetwork2/datasets","S:\datasets"]}

    • Также задайте 'AlternateFileSystemRoots' как массив ячеек массива ячеек из символьных векторов.

      {{'Z:\datasets','/mynetwork/datasets'};...
       {'Y:\datasets', '/mynetwork2/datasets','S:\datasets'}}

Значение 'AlternateFileSystemRoots' должно удовлетворить эти условия:

  • Содержит одну или несколько строк, где каждая строка задает набор эквивалентных корневых путей.

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

  • Корневые пути уникальны и не являются подпапками друг друга.

  • Содержит по крайней мере одну корневую запись пути, которая указывает на местоположение файлов.

Для получения дополнительной информации смотрите Настроенный Datastore для Обработки на Различных Машинах или Кластерах.

Пример: ["Z:\datasets","/mynetwork/datasets"]

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

Свойства

развернуть все

Это свойство доступно только для чтения.

Количество файлов в установленном на файл объекте, заданном в виде числа.

Пример: fs.NumFiles

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

Это свойство доступно только для чтения.

Разделите размер, заданный как 'file' или числовой скаляр.

Значение, присвоенное FileSplitSize, диктует вывод из метода nextfile.

  • Если FileSplitSize является 'file', то метод nextfile возвращает таблицу с FileName, FileSize, Offset и SplitSize. Значение SplitSize установлено равное FileSize.

  • Если FileSplitSize является числовым скаляром n, то метод nextfile возвращает FileName, FileSize, Offset и SplitSize. Значение SplitSize установлено равное FileSplitSize. Эта информация используется, чтобы считать байты n файла. Последующие вызовы метода nextfile возвращают информацию, чтобы помочь считать следующие байты n того же файла до конца файла.

Пример: 'FileSplitSize',20

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

Методы

hasfile Определите, доступно ли больше файлов в установленном на файл объекте
maxpartitions Максимальное количество разделов
nextfile Информация о следующем файле или фрагменте файла
partition Раздел установленный на файл объект
subsetСоздайте подмножество datastore или установленный на файл
reset Сбросьте установленный на файл объект
resolve Информация обо всех файлах в установленном на файл объекте

Примеры

свернуть все

Создайте установленный на файл объект, получите информацию файла один файл во время или получите информацию для всех файлов в установленном на файл объекте.

Создайте установленный на файл объект для всех файлов .mat от папки demos.

folder = fullfile(matlabroot,'toolbox','matlab','demos');
fs = matlab.io.datastore.DsFileSet(folder,...
                 'IncludeSubfolders',true,...
                 'FileExtensions','.mat');

Получите информацию для первого и второго файла от установленного на файл объекта.

fTable1 = nextfile(fs) ; % first file 
fTable2 = nextfile(fs) ; % second file

Получите информацию обо всех файлах путем получения информации для одного файла за один раз и соберите информацию в таблицу.

ft = cell(fs.NumFiles,1); % using cell for efficiency
i = 1;
reset(fs); % reset to the beginning of the fileset
while hasfile(fs)                 
    ft{i} = nextfile(fs);
    i = i + 1;
end
allFiles = vertcat(ft{:});

Также получите информацию обо всех файлах одновременно.

allfiles = resolve(fs);

Советы

  • Если вы используете объект DsFileSet в качестве свойства в вашем пользовательском datastore, то реализуете метод copyElement. Реализация метода copyElement позволяет вам создать глубокую копию объекта datastore. Для получения дополнительной информации смотрите, Настройка операции копирования. Для реализации в качестве примера метода copyElement смотрите, Разрабатывают Пользовательский Datastore.

Введенный в R2017b