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

时间:2014-10-29 18:09:50

标签: python sftp file-rename pysftp

我是Python的新手,我编写了一个使用pysftp模块的脚本。 pysftp模块中有一个功能,我遇到了问题 - 它是重命名功能。

这是电话

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 个答案:

答案 0 :(得分:1)

  1. 使用SFTP协议(缺少当前工作目录的概念),建议使用绝对路径。使用相对路径,结果是特定于服务器实现。因此,您无法确定实际尝试重命名的文件。

  2. 在* nix系统上,要重命名文件,您需要对包含文件夹的写入权限。您重命名的文件的权限无关紧要。