如何使用Nodejs将数据作为文件夹中的文件名写入CSV文件
Posted
技术标签:
【中文标题】如何使用Nodejs将数据作为文件夹中的文件名写入CSV文件【英文标题】:How to write a data as file names in a folder to CSV file using Nodejs 【发布时间】: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
【问题讨论】:
【参考方案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
,你想自己试试吗?以上是关于如何使用Nodejs将数据作为文件夹中的文件名写入CSV文件的主要内容,如果未能解决你的问题,请参考以下文章
Nodejs Parse Json 文件将输入转换为 JSON 数组写入文件