简体   繁体   English

如何使用 Nodejs 将文件夹中的数据作为文件名写入 CSV 文件

[英]How to write a data as file names in a folder to CSV file using Nodejs

Anty body did write file names in a folder to the CSV file using javascript Anty body 确实使用 javascript 将文件夹中的文件名写入 CSV 文件

my folder structure is我的文件夹结构是

Data
 +IMG
    +test
       -1.png
       -2.png
    +train
       -3.png
       -4.png

an output CSV file will be like this output CSV 文件将是这样的

Data/IMG/test/1.png     Data/IMG/train/3.png
Data/IMG/test/2.png     Data/IMG/train/4.png

You just need to loop through all folders and find all files.您只需要遍历所有文件夹并找到所有文件。 You can refer to this answer to do this.你可以参考这个答案来做到这一点。

when you are finding all files' paths, you can write these paths in a string for the csv file:当您找到所有文件的路径时,您可以将这些路径写入 csv 文件的字符串中:

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

let csvStr = "";

async function loop(startPath) {
    // Our starting point
    try {
        // Get the files as an array
        const files = await fs.promises.readdir(startPath);

        // Loop them all with the new for...of
        for (const file of files) {
            // Get the full paths
            const currentPath = path.join(startPath, file);

            // Stat the file to see if we have a file or dir
            const stat = await fs.promises.stat(currentPath);

            if (stat.isFile()) {
                console.log("'%s' is a file.", currentPath);
                // put the file into csv string
                csvStr += currentPath + ", "
            } else if (stat.isDirectory()) {
                console.log("'%s' is a directory.", currentPath);
                // enter the dictionary and loop
                await loop(currentPath);
            }

        } // End for...of
    } catch (e) {
        // Catch anything bad that happens
        console.error("We've thrown! Whoops!", e);
    }

}

// Make an async function that gets executed immediately
(async () => {
    // start loop from the path where you run node
    await loop("./");

    fs.writeFileSync("your.csv", csvStr);
})();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM