【问题标题】:Selecting random file but then deleting it选择随机文件,然后将其删除
【发布时间】:2019-09-29 22:28:26
【问题描述】:

我有一些代码从文件夹中选择一个随机文件然后记录它,在完成记录后我希望它被删除但我似乎无法删除它。

随机选择文件的路径存储为变量。

const trash = require('trash');
var fs = require('fs'),
    path = require('path'),
    files_memes = fs.readdirSync('/Users/jackb/Desktop/pup/Pictures/reddit_sub_memes')
var filename = (random_file());
var imgPATH = path.join(__dirname, '/Users/jackb/Desktop/pup/Pictures/reddit_sub_memes/' + filename);
const del = require('del');

function random_file(){
  var allFiles = (files_memes)
  return allFiles[Math.floor(Math.random() * allFiles.length)];
}
console.log(filename);
console.log(imgPATH);
(async () => {
    const deletedPaths = await del(['imagePATH']);

    console.log('Deleted files and directories:\n', deletedPaths.join('\n'));
})();

我希望删除记录的文件。

【问题讨论】:

  • 不应该await del(['imagePATH'])await del([ imagePATH ]) - 意思是删除路径在变量imagePath 中的文件,而不是一些不存在的名为“imagePath”的文件?
  • 两种方法我都试过了,每次都没有被删除。我不明白为什么它不起作用,因为变量显示在控制台中并且清楚地显示了真实的路径。
  • 我怀疑在imgPath 的开头包含__dirname 会导致问题,除非以系统磁盘的根目录作为工作目录执行。但是我无法解释日志输出,但很高兴看到你已经让它工作了。

标签: javascript node.js random


【解决方案1】:

您可以将所有文件路径字符串放在一个数组中,并在 lodash 中使用 _.sample(),它可以帮助您从数组中选择随机值。

【讨论】:

  • 我宁愿不使用数组,因为到目前为止一切正常,我只是无法使用值等于文件路径的变量删除文件。
【解决方案2】:

改了这行代码

const deletedPaths = await del(['imagePATH']);

const deletedPaths = await 
del('/Users/jackb/Desktop/pup/Pictures/reddit_sub_memes/' + filename);

【讨论】:

    猜你喜欢
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多