Paramiko SFTP 文件重命名:OSError('Extended request not supported.')

Paramiko SFTP file renaming: OSError('Extended request not supported.')

我找不到关于此异常的任何信息。我正在尝试使用 fsspec 重命名本地 (Windows) SFTP 服务器上的远程文件。 Paramiko 在幕后做着 posix_rename()。错误是什么意思?

fs.rename(old_file_path, new_file_path)

路径看起来像 /folder/file.ext

我可以使用同一台服务器上的其他 FTP 客户端重命名文件。

的确,fsspec SFTPFileSystem.mv 调用了 Paramiko SFTPClient.posix_rename。这是一个糟糕的选择。 SFTPClient.posix_rename 内部使用专有的 OpenSSH posix-rename@openssh.com 扩展,大多数其他 SFTP 服务器(例如您的)自然不支持该扩展。

我不知道什么是最好的solution/workaround。您可以基于 SFTPFileSystem 添加自己的“文件系统”实现,重新实现 SFTPFileSystem.mv 以调用标准 Paramiko SFTPClient.rename(使用标准 SFTP 重命名请求)。

实际上,我刚刚发现 SFTPClient 是通过 SFTPFileSystem 公开的,我可以直接在其上调用 rename(),这很有效!

fs.ftp.rename("testfile.txt", "x")