【问题标题】:How to write a data as file names in a folder to CSV file using Nodejs如何使用Nodejs将数据作为文件夹中的文件名写入CSV文件
【发布时间】:2020-12-03 15:52:27
【问题描述】:

Anty body 确实使用 javascript 将文件夹中的文件名写入 CSV 文件

我的文件夹结构是

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

输出的 CSV 文件会是这样的

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

【问题讨论】:

    标签: javascript node.js csv


    【解决方案1】:

    您只需要遍历所有文件夹并找到所有文件。 您可以参考this answer 进行操作。

    当您找到所有文件的路径时,您可以将这些路径写入 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);
    })();
    

    【讨论】:

    • 感谢您的回复我是js新手,您能解释一下或制作代码吗???
    • fromPath 是内部循环,是文件夹中的当前位置,应该是文件路径或字典路径。您想查找所有文件,因此我们只需要文件的路径。我们可以为 CSV 收集文件路径的名称,所以我添加了csvStr += fromPath + ", ", 用于 CSV 分隔符。
    • 你能提供一个完整的代码兄弟吗?我尝试过但没有成功
    • CSV(逗号分隔值)文件中总是有逗号,所以我无法理解您给定的示例输出(没有逗号)。或者,我猜你只是想让test 成为一个列,而train 成为另一个?我认为这并不难,因为您已经知道如何获取所有文件名。你需要做的是添加一些if else,你想自己试试吗?
    猜你喜欢
    • 2019-07-23
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多