Переименование файла Paramiko SFTP: OSError(«Расширенный запрос не поддерживается».)

Я ничего не могу найти об этом исключении. Я пытаюсь переименовать удаленный файл на локальном (Windows) сервере sFTP с помощью fsspec. Paramiko за кулисами выполняет posix_rename(). Что означает ошибка?

         fs.rename(old_file_path, new_file_path)

Пути выглядят как /folder/file.ext.

2 ответа

На самом деле, я только что обнаружил, что SFTPClient доступен через SFTPFileSystem, и я могу напрямую вызывать rename() для него, что сработало!

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

Действительно, fsspec называет Paramiko. Это имхо плохой выбор. SFTPClient.posix_renameвнутренне использует проприетарный OpenSSH posix-rename@openssh.comрасширение, которое, естественно, не поддерживается большинством других SFTP-серверов (например, вашим).

Я не знаю, что является лучшим решением/обходным путем. Вероятно, вы можете добавить свою собственную реализацию «файловой системы», основанную на SFTPFileSystem, повторная реализация SFTPFileSystem.mvвызвать стандартный ParamikoSFTPClient.rename(который использует стандартный запрос на переименование SFTP).

Другие вопросы по тегам