Получение списка файла с помощью 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 |
Скачайте и откройте файл в Loginom. При необходимости Loginom CE можно скачать бесплатно
Минимальные требования к системе:
- Операционная система: Windows 8.1 и выше.
- CPU x64: 1 core.
- Оперативная память: 1 GB.
- Жесткий диск: 10 GB.