Как импортировать файл, в котором часть имени файла часто меняется?

Я пытаюсь импортировать файл, где часть имени файла очень часто меняется. Текущая дата является частью имени файла. поэтому он очень часто меняется.

Ниже мой код импортирует файл. так как его имя меняется Как мне импортировать файл, не меняя имя файла каждый день?

var CusInfo = path.join(__dirname,' CusInfo_2018_05-17.txt');


person James    schedule 17.05.2018    source источник
comment
Рассматривали ли вы возможность импорта, прочитав содержимое родительской папки?   -  person li x    schedule 17.05.2018
comment
Поскольку его имя меняется и для его имени существует правило, реализуйте правило в коде, чтобы найти имя файла. Не жестко кодируйте его имя.   -  person axiac    schedule 17.05.2018


Ответы (2)


Вот пример использования библиотеки fs для чтения содержимого каталога и поиска файлов, содержащих «CusInfo».

import fs from 'fs';

let contents = fs.readDirSync('./foo');

for(let x = 0; x < contents.length; x++){
 if(contents[x].includes('CusInfo')){
    // Do more checks or use the file or save to another variable.
   }
}

Теперь, если имя файла изменится из-за даты, вы все равно сможете найти файл или файлы.

person li x    schedule 17.05.2018

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

Поскольку (я предполагаю) вы просто хотите, чтобы сегодняшние данные находились в пути к файлу txt, просто поместите это в имя файла. Вы можете сделать это с помощью moment следующим образом:

const moment = require('moment');
const fs = require('fs');

const now = moment();
const fileName = `CusInfo_${now.format('YYYY_MM-DD')}.txt`;

fs.readFileSync(fileName);

Теперь это вполне может вызвать ошибку, потому что нет гарантии, что файл txt уже создан.

Чтобы справиться с этим, используйте fs.access() перед фактическим чтением файла.

fs.access(fileName, fs.constants.F_OK, (err) => {
    if (err) {
        fileName = `CusInfo_${now.add(-1, 'days').format('YYYY_MM-DD')}.txt`;
    }

    fs.readFileSync(fileName)
}

Этот код выше проверит, существует ли файл txt на сегодняшний день, и если нет, изменит имя файла на вчерашнее txtfile.

person Enslev    schedule 17.05.2018