Python mkdir()'没有这样的文件或目录'w/NodeJS

时间:2021-02-24 22:11:19

标签: javascript python node.js mkdir python-os

我有以下非常简单的 Python 程序。当我自己运行它时,它会完全按照预期创建一个新目录:

import os
os.mkdir("//myuncpath.com/folder1/newFolderName")     //makes new folder in remote file store location

所以,我写了一个 NodeJS 应用程序,它只是调用这个 Python 脚本:

const {PythonShell} = require("python-shell");

let options = {
    scriptPath: '/path/to/PyFile',
};

PythonShell.run('PythonFile.py', options, function (err, results) {     //calls .py file to mkdir
    if err: console.log(err);
})

但是,当我通过 Node 调用脚本时,Python 脚本抛出了 FIleNotFound 错误:

{ Error: FileNotFoundError: [Errno 2] No such file or directory: '//myuncpath.com/folder1/newFolderName'
    at PythonShell.parseError
    ----- Python Traceback -----
    File "/location/to/PyFile.py", line 10, in <module>
        os.mkdir(sys.argv[1])
  traceback: 'Traceback (most recent call last):\n  File "/location/to/PyFile.py", 
        line 10, in <module>\n    os.mkdir(my_dir)\nFileNotFoundError: [Errno 2] No such file or directory: \'//myuncpath.com/folder1/newFolderName\'\n',
  executable: 'python3',
  options: null,
  script: '/location/to/PyFile.py',
  exitCode: 1 }

这里似乎发生了什么?我很难从 Python 中解码回溯,因为对我来说一切看起来都有些正常(除了路径周围可能有些奇怪的 \n 是 \' ?)

另外,如果我只用 print("Hello") 替换 Python 中的 os.mkdir,效果很好,所以脚本被正确调用,它只是不喜欢 os.mdkir

我很感激任何帮助,我已经坚持了几个星期了。

1 个答案:

答案 0 :(得分:0)

查看您运行代码的用户身份。当您运行 Python 脚本时,大概您正在以有权访问目标路径的用户身份运行它。但是当您通过 Node 调用它时,NodeJS 应用程序运行在什么用户上下文中?如果该用户无权访问目标路径,则 Python 脚本将无法找到目标目录以在其中创建新目录。尝试:

  • 在与运行 Python 脚本相同的用户上下文中运行 NodeJS
  • 授予 NodeJS 用户帐户访问目标路径的权限。