使用pysftp模块重命名文件时权限被拒绝

1 投票
1 回答
2252 浏览
提问于 2025-04-30 10:56

我刚开始学习Python,正在写一个使用pysftp模块的脚本。在pysftp模块里,有一个我遇到麻烦的函数——就是rename函数。

这是我调用这个函数的代码

srv = pysftp.Connection(host = 'xxx.com', username = 'xxx', password = 'xxx')             
y = srv.rename('ftptest.txt', 'renamedfile.txt')

我遇到的错误是

Traceback (most recent call last):
   File "./ftp.py", line 49, in <module>
    y = srv.rename('ftptest.txt', 'renamedfile.txt')
   File "/usr/local/lib/python2.7/dist-packages/pysftp.py", line 740, in rename
self._sftp.rename(remote_src, remote_dest)
  File "/usr/local/lib/python2.7/dist-packages/paramiko/sftp_client.py", line 365, in     rename
     self._request(CMD_RENAME, oldpath, newpath)
  File "/usr/local/lib/python2.7/dist-packages/paramiko/sftp_client.py", line 729, in _request
    return self._read_response(num)
    File "/usr/local/lib/python2.7/dist-packages/paramiko/sftp_client.py", line 776, in _read_response
self._convert_status(msg)
  File "/usr/local/lib/python2.7/dist-packages/paramiko/sftp_client.py", line 804, in    _convert_status
raise IOError(errno.EACCES, text)
IOError: [Errno 13] Permission denied

我已经确认文件是存在的,并且它的权限设置为777。

暂无标签

1 个回答

1
  1. 使用SFTP协议时(这个协议没有当前工作目录的概念),建议使用绝对路径。因为如果用相对路径,结果就会依赖于服务器的具体实现。所以你不能确定你到底在尝试重命名哪些文件。

  2. 在*unix系统中,要重命名一个文件,你需要对包含这个文件的文件夹有写入权限。你要重命名的文件本身的权限并不重要。

撰写回答