1

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

fs.rename(old_file_path, new_file_path)

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

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

4

2 回答 2

1

事实上, fsspecSFTPFileSystem.mv调用Paramiko SFTPClient.posix_rename。那是一个糟糕的选择。SFTPClient.posix_rename内部使用专有的 OpenSSHposix-rename@openssh.com扩展,大多数其他 SFTP 服务器(例如您的)自然不支持该扩展。

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

于 2022-01-11T06:31:31.887 回答
1

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

fs.ftp.rename("testfile.txt", "x")
于 2022-01-11T14:10:31.750 回答