【问题标题】:Display File Name and File Size in CWD in Node.js在 Node.js 中以 CWD 显示文件名和文件大小
【发布时间】:2020-09-16 20:02:25
【问题描述】:

我在处理这段代码时遇到了问题。我想要完成的是获取文件名和大小的列表以在 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))

谢谢

【问题讨论】:

  • 在记录统计信息的同一回调中记录文件名。 .stat 是异步的,因此不会在您的文件名日志之后立即调用回调,这就是为什么您在之后打印尺寸的原因

标签: javascript python node.js filesystems stdout


【解决方案1】:

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(),它不会添加换行符,但您的输出仍然会出现问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多