Получение списка файла с помощью JavaScript

В работе аналитика очень часто приходится сталкиваться с рутинными задачами, которые не всегда связаны с очисткой данных, машинным обучением или написанием скрипта на Python. Путь начинается, как правило, с импорта данных или с их поиском. С помощью данного сценария пользователь может получить список объектов из файловой системы компьютера или Loginom File Storage для использования в различных целях, в том числе для решения задачи множественного импорта. Реализовано с помощью библиотеки JavaScript fileapi.

Запустить демо

Установить локально

Описание алгоритма

Данную подмодель рекомендуется использовать как производный компонент. В ней представлено 2 узла: Получение списка файлов(JavaScript) и Таблица в переменные.

Реализация алгоритма

Во входном порту переменных указаны две переменные: Путь, по которому компонент будет выводить список файлов, и Логический Включая папки. По умолчанию путь задан: \common\Примеры данных, для того, чтобы получить список файлов, которые есть в папке на демостенде. При локальном запуске примера необходимо указать путь к папке в файловой системе компьютера.

В узле JavaScript настроены столбцы выходной таблицы. Она будет иметь следующую структуру:

Имя Метка
name Имя
file_extension Расширение
full_name Полное имя
size Размер
correct_path Корректность пути
isfolder Папка
mdate Дата изменения

Код:

import { InputTable, InputTables, InputVariables, OutputTable, DataType, DataKind, UsageType } from "builtIn/Data";
import * as fs from "builtIn/FS"; // Использованиe библиотеки Fyle System

let path = InputVariables.Items.path.Value; // Получение переменной path из входного порта

if (fs.existsSync(path) == false){ //Условие, при котором путь не существует 
    OutputTable.Append();
    OutputTable.Set("correct_path", InputVariables.Items.error.Value); // Вывод ошибки (значение переменной)
}
else{
    try{
        let files = fs.readdirSync(path, {withFileTypes: true}); // Создание объекта files, в котором содержится информация о файлах по указанному пути
        let full_name;
        for (let i = 0; i < files.length; i++) { // Цикл, в котором обрабатываются объекты  файловой системы
            OutputTable.Append(); //Добавление новой строки в выходную таблицу
            full_name = path + "\\" + files[i].name; // Формирование полного имени файла (вместе с путем)
            OutputTable.Set("correct_path", true); // Добавление значения в поле correct_path
            OutputTable.Set("name", files[i].name);
            if (files[i].isDirectory()){ // Проверка, является ли объект файлом
                OutputTable.Set("isfolder", true);
            }
            else{
                OutputTable.Set("file_extension", files[i].name.substring(files[i].name.lastIndexOf(".") + 1));
                OutputTable.Set("size", fs.statSync(full_name).size);
                OutputTable.Set("isfolder", false);
                }
            OutputTable.Set("full_name", full_name); 
            OutputTable.Set("mdate", fs.statSync(full_name).mtime);
        }
    }
    catch (e){ // Обработка ошибок
        OutputTable.Append();
        OutputTable.Set("correct_path", e);        
    }
}

В узле Таблица в переменные в порт переменных выводятся ошибки и исключения выполнения скрипта. Если ошибок нет, выводится true.

Вывод результатов

На выходе подмодель имеет порт таблицы и порт с переменными.

Таблица:

Имя Метка
name Имя
file_extension Расширение
full_name Полное имя
size Размер
isfolder Папка
mdate Дата изменения

Переменные:

Имя Метка Значение
result Результат true/false

Парсинг JSON
Python в Loginom

Скачайте и откройте файл в Loginom. При необходимости Loginom CE можно скачать бесплатно

Скачать демопример

Минимальные требования к системе:

  • Операционная система: Windows 8.1 и выше.
  • CPU x64: 1 core.
  • Оперативная память: 1 GB.
  • Жесткий диск: 10 GB.