我找不到有关此异常的任何信息。我正在尝试使用 fsspec 重命名本地(Windows)SFTP 服务器上的远程文件。帕拉米科在幕后正在做一个posix_rename()
。错误是什么意思?
fs.rename(old_file_path, new_file_path)
路径看起来像/folder/file.ext
。
我可以用同一台服务器上的其他 FTP 客户端重命名文件。
事实上, fsspecSFTPFileSystem.mv
调用Paramiko SFTPClient.posix_rename
。那是一个糟糕的选择。SFTPClient.posix_rename
内部使用专有的 OpenSSHposix-rename@openssh.com
扩展,大多数其他 SFTP 服务器(例如您的)自然不支持该扩展。
我不知道什么是最好的解决方案/解决方法。您可能可以添加自己的“文件系统”实现SFTPFileSystem
,重新实现SFTPFileSystem.mv
以调用标准 Paramiko SFTPClient.rename
(它使用标准 SFTP 重命名请求)。
实际上,我刚刚发现 SFTPClient 是通过 SFTPFileSystem 暴露的,我可以直接对其调用 rename() ,这有效!
fs.ftp.rename("testfile.txt", "x")