在Node.js中以CWD显示文件名和文件大小

问题描述

代码有问题。我要完成的工作是获取要在STDOUT的同一行上打印的文件名和大小的列表。目前,我正在获取文件名列表,然后是大小列表,但是我希望这些大小与名称一起显示。我对如何在Python中执行此操作更加熟悉,并且我对在JavaScript中执行此操作的难度感到惊讶。因此,如果您不仅可以帮助我纠正我的代码,而且可以帮助我了解代码在JS中的工作方式,那么将不胜感激。这是代码

const fs = require('fs');

let path = __dirname;

let files = fs.readdirsync(path);

for (var i = 0; i < files.length; i++){
  var fileStats = files[i];
  console.log("Start: " + fileStats);
  fs.stat(fileStats,function(err,stats){    
    console.log(stats.size);
  });
}

为了进行比较,这就是Python中的代码

import os
import os.path

path = os.getcwd()
contents = os.listdir(path)

print(path)
for file in contents:
  size = os.path.getsize(file)
  print("File: {0},Size: {1} Bytes".format(file,size))

谢谢

解决方法

console.log()总是要创建新行。如果要在同一行上,则必须在同一日志中执行。

const fs = require('fs');

let path = __dirname;

let files = fs.readdirSync(path);

for (var i = 0; i < files.length; i++){
  var fileStats = files[i];
  fs.stat(fileStats,function(err,stats){    
    console.log('Start:',fileStats,stats.size);
  });
}

您可以使用process.stdout.write(),它不会添加换行符,但是输出仍然会混乱。