然后在node.js应用程序中使用fs.rename遇到麻烦。 我已经使用了下面的函数,并且可以正常运行。
var fs =require("fs");
var path =require("path")
module.exports= function(oldPath, newPath){
oldPath=path.join(__dirname, "..", "documents", "bka" , oldPath);
newPath=path.join(__dirname, "..", "documents", "bka" , newPath);
fs.rename(oldPath, newPath, (err)=>{if (err) console.log(err)});
}
然后我尝试将函数用于另一种情况。 oldPath存在。 newPath不存在。 如果我不更改newPath,则不会发生错误。如果我更改它,则会发生以下错误,并且我不知道为什么:
{ Error: ENOENT: no such file or directory, rename '/home/ubuntu/workspace/documents/bka/7_Wall Street_1/9_Whg_Nr_22/7_bob' -> '/home/ubuntu/workspace/documents/bka/7_Wall Street_1/9_Whg_Nr_221/7_bob' at Error (native) errno: -2, code: 'ENOENT', syscall: 'rename', path: '/home/ubuntu/workspace/documents/bka/7_Wall Street_1/9_Whg_Nr_22/7_bob', dest: '/home/ubuntu/workspace/documents/bka/7_Wall Street_1/9_Whg_Nr_221/7_bob' }
如果您能帮助我,那将很棒。我以前曾经见过其他一些人也遇到过类似的问题,但没有找到任何可以使我理解这个问题的答案。
感谢amit
答案 0 :(得分:0)
您正在将文件numpy
重命名为>>> import numpy as np
>>> matrix = np.array([[1,4,7],[2,5,8],[3,6,9]])
>>> matrix
array([[1, 4, 7],
[2, 5, 8],
[3, 6, 9]])
>>> np.diag(matrix)
array([1, 5, 9])
这仅在目录.../9_Whg_Nr_22/7_bob
已经存在时才起作用,而我猜测它不存在,并且.../9_Whg_Nr_221/7_bob
将不为您创建该目录。 / p>
在这种情况下,目标目录可能还不存在,您必须首先手动创建目录,例如使用mkdirp
。
答案 1 :(得分:0)
感谢您的回复。
我已将其修复。现在的代码是一团糟,但至少它能完成应有的工作。
var path =require("path");
var mkdirp =require("mkdirp");
var shell = require("shelljs");
var Promise= require("bluebird");
module.exports= function(oldPath, newPath){
oldPath=path.join(__dirname, "..", "documents", "bka" , oldPath);
newPath=path.join(__dirname, "..", "documents", "bka" , newPath);
var oldArr= oldPath.split("/");
var newArr= newPath.split("/");
var np="";
var op="";
var createDir=(path)=>{
return new Promise((resolve)=>{
mkdirp(path, (err)=>{
if (err) throw err
resolve(path)
});
});
}
var copy =(from, to)=>{
return new Promise((resolve)=>{
shell.cp("-R",from+"/*", to);
resolve();
});
}
var rm= (path)=>{
return new Promise((resolve)=>{
shell.rm("-R", path);
resolve();
});
}
var results=[]
for( var i=0; i<oldArr.length; i++){
op += oldArr[i]+"/";
np += newArr[i]+"/";
if(oldArr[i]!= newArr[i]){
Promise.resolve()
var result={}
result.from=op;
result.to=np;
results.push(result);
}
}
createDir(results[results.length-1].to)
.then(()=>{ copy(results[results.length-1].from, results[results.length-1].to)
.then(()=>{rm(results[0].from).then(()=>{
results.pop();
});
});
});
}