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")
我找不到关于此异常的任何信息。我正在尝试使用 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")