Работа с файлами
Работа с файлами осуществляется с помощью блоков:
- Сформировать CSV
- Архивировать
- Распаковать
- Извлечь текст из PDF
- Извлечь данные
- Конвертация файлов в PNG
- Создать файл из шаблона
- Загрузить в каталог
- Получить список файлов
- Получить CSV
- Скачать содержимое файла
- Удалить файл
Эти блоки могут использовать как локальное хранилище, так и внешние подключения — например, SMB-подключения.
При работе с блоками из категории Хранилище для каждого пространства создается специальная папка с именем в виде GUID (уникальный идентификатор) в рабочем каталоге Proceset в подкаталоге filestorage %ProgramData%\Infomaximum на ОС Windows и /var/lib/infomaximum/data/ внутри контейнера на ОС Linux.

Сформировать CSV
Блок создает CSV-файл из данных, полученных из предыдущих блоков.
Параметры:
- Колонки CSV:
- Имя колонки
- Данные для колонки (добавляются через маппинг; принимает файловые переменные и массив файлов)
- Добавлять заголовки колонок — если включено, первая строка будет содержать названия колонок
- Разделитель:
- Точка с запятой
- Запятая
- Прямая черта
- Косая черта
- Табуляция
- Пробел
- Другой (появляется поле для указания разделителя)

Сформированный файл можно архивировать и загрузить в каталог.
Архивировать
Блок архивирует один или несколько файлов в формат .gzip.
Файлы, которые необходимо архивировать, передаются в поле Файлы с помощью маппинга. Блок принимает отдельные файловые переменные через кнопку Добавить или массив файлов через кнопку fx.

Полученный архив можно загрузить в каталог и распаковать.
Прежняя версия блока, принимавшая файл через поле Содержимое файла, помечена устаревшей. Существующие скрипты продолжают работать, но в интерфейсе отображается предупреждение об устаревании.
Распаковать
Блок распаковывает GZIP-архивы.
Единственный параметр — Файлы (обязательный). Блок принимает один или несколько архивов: по одному через кнопку Добавить или массивом через кнопку fx. Из одного архива блок получает один файл, порядок выходных файлов соответствует порядку входных.
Имя распакованного файла берется из поля file_name архива.

Блок возвращает массив объектов, у каждого объекта — поля file_name, file_content, file_size.
Тексты ошибок:
- Пустой массив или отсутствие файлов на входе — Файлы для распаковки не найдены
- Файл не в формате GZIP — Некорректный формат входящего файла: требуется файл формата gz
Прежняя версия блока, принимавшая архив через поле Содержимое файла с ручным указанием имени и расширения, помечена устаревшей. Существующие скрипты продолжают работать, но в интерфейсе отображается предупреждение об устаревании. Маппинги из прежней версии автоматически не переносятся.
Извлечь текст из PDF
Блок извлекает текст из PDF-файлов. Текст на изображениях и сканах блок не распознает.
Файлы передаются в поле PDF-файл: по одному через кнопку Добавить или массивом через кнопку fx.

Блок возвращает массив объектов — по одному на каждый входной файл. Поля объекта:
source— имя файлаstatus—trueдля успешно обработанных,falseдля нечитаемых (скан или поврежденный файл)text— извлеченный текст. Для нечитаемых файлов возвращается пробел (" ")
Нечитаемый файл в наборе не прерывает обработку остальных. После выполнения проблемные файлы можно отфильтровать по значению status.
Если передан пустой массив, блок возвращает ошибку Массив файлов пуст.
Скрипты, в которых файл передается в блок через поле content, работают без изменений — переносить маппинг не нужно.
Прежняя версия блока помечена устаревшей. Существующие скрипты продолжают работать.
Если нужно извлечь не только текст, но и изображения, или работать с форматами DOC(X), HTML, XML, TXT, JSON, RTF, используйте блок Извлечь данные.
Извлечь данные
Блок извлекает текст и изображения из файлов различных форматов для дальнейшего использования, например анализа нейросетью.
Поддерживаемые форматы: CSV, HTML, XML, TXT, JSON, RTF, PDF, DOC(X). Максимальный размер файла — 4 Гб.
Файлы передаются в поле Содержимое: по одному через кнопку Добавить или массивом через кнопку fx.

Блок возвращает массив объектов — по одному на каждый входной файл. Поля объекта:
source— имя файлаtext— извлеченный текстimages— массив извлеченных изображений в формате PNG с именамиreport_1.png,report_2.pngи т. д.
Если файл поврежден, блок прерывает выполнение с ошибкой Файл поврежден. Проверьте целостность документа и повторите попытку. Если передан пустой массив — ошибка Файлы для извлечения не найдены.
Отличие от Извлечь текст из PDF:
| Извлечь текст из PDF | Извлечь данные | |
|---|---|---|
| Форматы | Только PDF | CSV, HTML, XML, TXT, JSON, RTF, PDF, DOC(X) |
| Что извлекает | Только текст | Текст и изображения (PNG) |
| Нечитаемый файл в наборе | Не прерывает обработку, в поле status — false | Прерывает выполнение |
Конвертация файлов в PNG
Блок конвертирует файлы в изображения формата PNG.
Поддерживаемые форматы: CSV, HTML, HTM, XML, TXT, JSON, RTF, PDF, DOC(X). Максимальный размер файла — 4 Гб.
Параметры блока:
- Содержимое — один файл, несколько файлов через кнопку Добавить или массив через кнопку
fx - Качество изображений (обязательное) — Высокое (300 DPI) или Среднее (150 DPI), по умолчанию — Среднее (150 DPI)
- Постраничная конвертация — переключатель. Если он включен, каждая страница файла конвертируется в отдельное изображение, а номер страницы добавляется в конец имени файла

Блок всегда возвращает массив images, даже если на входе был один файл. Каждый элемент массива содержит поле source (имя исходного файла) и поле с PNG-изображением.
К имени выходного файла добавляется формат исходного: sample.pdf → sample_pdf.png. При постраничной конвертации добавляется еще и номер страницы: sample_pdf_1.png, sample_pdf_2.png.
Создать файл из шаблона
Блок создает файл по шаблону, подставляя в него данные из скрипта.
Параметры блока:
- Шаблон (обязательное) — файл шаблона, передается через маппинг
- JSON-объект с данными (обязательное) — данные для подстановки в шаблон
- Формат (обязательное) — формат выходного файла: PDF, DOCX или XLSX
- Имя файла (обязательное) — имя создаваемого файла

Загрузить в каталог
Блок создает файл и загружает его в указанный каталог в любом заданном формате.
Параметры блока:
- Путь к файлу — для блоков пакета Хранилище укажите путь к файлу относительно каталога filestorage вашего пространства. Для блоков пакетов FTP, SFTP и SMB укажите путь относительно рабочей области, заданной в настройках подключения. Путь к создаваемому файлу необходимо указывать с названием и расширением файла. Например, /имяпапки/имяфайла.csv. При загрузке архива укажите расширение .gzip. Путь также можно указать с помощью маппинга — в этом случае рядом с полем укажите расширение
- Содержимое файла (используются только поля маппинга). Может содержать:
- Текст
- Текст и теги маппинга. Содержимое должно быть однородно, невозможно совместить картинку и текст
- Теги маппинга. Содержимое должно быть однородно, невозможно совместить картинку и текст
- Файловый объект (
file_object), полученный из другого блока
Не указывайте в поле Путь к файлу у блока Загрузить в каталог из группы Хранилище одиночный символ / без имени файла — в этом случае блок будет считаться ненастроенным, и файл не будет создан.

Загрузить файл возможно только при запуске всего скрипта, так как данные поступают от предыдущих блоков. При одиночном тестировании блока создается пустой файл без содержимого.
Получить список файлов
Блок получает список файлов, их характеристики и информацию о каталоге.
В поле Путь к каталогу для блоков пакета Хранилище укажите путь относительно каталога filestorage вашего пространства. Для блоков пакетов FTP, SFTP и SMB укажите путь относительно рабочей области, заданной в настройках подключения. Для ввода пути можно использовать как поля маппинга, так и текст. Чтобы указать несколько путей, нажмите Добавить под полем — каждый путь занимает отдельную строку с кнопкой удаления.
Дополнительные параметры:
- Искать во вложенных папках — при включении поиск идет в указанной папке и всех вложенных, маска применяется на всех уровнях
- Только файлы — при включении в результат попадают только файлы, без папок. Поиск во вложенных папках продолжает работать, если он включен
Оба переключателя по умолчанию выключены.
Маски имени файла
В конце пути можно указать маску имени файла для фильтрации. Маска допустима только в имени файла — если указать ее в середине пути, скрипт не пройдет проверку и не запустится (ошибка Маска допустима только в имени файла; укажите путь хотя бы с одним «/»).
Поддерживаемые символы:
| Символ | Что значит | Пример |
|---|---|---|
* | Любая последовательность символов | *.pdf — все PDF-файлы |
? | Один любой символ | file?.txt — file1.txt, fileA.txt |
[bt] | Один символ из набора | [bt]est.csv — best.csv или test.csv |
[a-z] | Один символ из диапазона | [a-z]*.csv |
[!a] | Один символ, кроме указанного | [!a]*.txt — файлы, не начинающиеся на «a» |
{*.pdf,*.doc} | Альтернация — одно из перечисленных через запятую | {*.pdf,*.doc} — все PDF и DOC |
Маска учитывает регистр: по маске *.PDF файлы с расширением .pdf в результат не попадут. Фигурные скобки работают как альтернация только с запятой внутри — по маске {*.pdf} результат будет пустым. Рекурсивный обход вложенных папок включается переключателем Искать во вложенных папках, а не маской **.
Если по маске нет совпадений, блок возвращает пустой список без ошибки.

Блок возвращает массив с данными:
Name— название файла/каталога (тип String)Size— размер файла/каталога в байтах (тип String)Owner— владелец файла/каталога (тип String)Group— группа, к которой относится владелец файла/каталога (тип String)Modification_time— время последнего изменения файла/каталога (тип DateTime)Permissions— права пользователя на файл/каталог в виде последовательности символов: доступ на чтение, запись и выполнение для владельца, группы и остальных пользователей. Если доступ отсутствует, вместо символа отображается прочеркdirectory—trueдля папок,falseдля файлов
Получить CSV
С помощью блока можно получить CSV-файл из указанного каталога.
Параметры блока:
- Путь к файлу (для блоков пакета Хранилище укажите путь к файлу относительно каталога filestorage вашего пространства. Для блоков пакетов FTP, SFTP и SMB укажите путь относительно рабочей области, заданной в настройках подключения. Путь к файлу необходимо указывать с названием и расширением файла)
- Таблица содержит заголовок (определяет наличие/отсутствие заголовка таблицы)
- Имена столбцов (колонки можно менять местами, удерживая нужную и перетаскивая вниз или вверх):
- Имя колонки
- Тип (строка, число, дробное число, дата и время, логический тип, большое целое число)
- Загрузить пример (позволяет загрузить CSV-файл для автоматического добавления колонок. При нажатии кнопки открывается модальное окно для загрузки файла):
- Типы данных определяются автоматически, можно изменить
- Загрузка новой схемы заменяет предыдущую
- Сохранить настройки парсинга (параметры передаются в настройки блока)
- Настройка парсинга:
- Разделитель (символ, разделяющий значения на элементы в CSV):
- Точка с запятой
- Запятая
- Прямая черта
- Косая черта
- Табуляция
- Пробел
- Другой (появляется поле для указания разделителя)
- Квалификатор (символ, обрамляющий значения элементов в CSV):
- Одиночные кавычки
- Двойные кавычки
- Локаль (будет применена при парсинге значений из CSV. Выбирается из списка)
- Кодировка (будет применена при разборе байтового потока файла. Выбирается из списка)

Загрузка примера
Для автоматического добавления колонок можно загрузить пример CSV-файла. Для этого нажмите Загрузить пример справа от заголовка Имена столбцов. Откроется модальное окно для загрузки файла.

Выберите файл и нажмите Продолжить.
Откроется окно предпросмотра, в котором можно сменить разделитель, квалификатор, локаль, кодировку и типы данных колонок. Если поставить галочку у параметра Сохранить настройки парсинга, настройки скопируются в параметры блока. Для завершения загрузки нажмите кнопку Применить.

Столбцы автоматически добавились, заменив предыдущие.

- Максимальный размер файла — 20 МБ
- Загрузка новой схемы заменяет предыдущую
- Если указаны типы, которые не соответствуют данным, появляется ошибка
- При попытке загрузить пустой файл отобразится ошибка, что файл пуст, окно предпросмотра не откроется
- Количество колонок в заголовке и количество колонок в самой таблице должны совпадать, иначе появится ошибка
- Если в одной и той же колонке встречаются разные типы данных, например, Строка и Число, все значения данной колонки конвертируются в строки
- Если пример CSV-файла состоит из одной строки, все колонки таблицы будут с типом Строка
- Все пустые значения или значения, где явно прописано null, будут с типом Строка
Скачать содержимое файла
Блок скачивает файл из каталога, указанного в поле Путь к файлу. Для блоков пакета Хранилище укажите путь к файлу относительно каталога filestorage вашего пространства. Для блоков пакетов FTP, SFTP и SMB укажите путь относительно рабочей области, заданной в настройках подключения. Путь к файлу необходимо указывать с названием и расширением файла. Пример: /имяпапки/имяфайла.csv. Путь можно ввести вручную или использовать маппинг. Максимальный размер скачиваемого файла — 52,5 МБ.
Чтобы скачать сразу несколько файлов, включите переключатель Массив и укажите в поле Путь к файлу массив путей через маппинг. Скачанные файлы блок вернет одним массивом.

Файл, скачанный с помощью этого блока, сохраняется в буфере и может многократно использоваться в других блоках для работы с файлами без повторных обращений к хранилищу.
Удалить файл
Блок удаляет файл из каталога, указанного в поле Путь к файлу. Для блоков пакета Хранилище укажите путь к файлу относительно каталога filestorage вашего пространства. Для блоков пакетов FTP, SFTP и SMB укажите путь относительно рабочей области, заданной в настройках подключения. Путь к файлу необходимо указывать с названием и расширением файла. Пример: /имяпапки/имяфайла.csv. Путь можно ввести вручную или использовать маппинг.

Была ли статья полезна?