Python FTP ftplib将整个文件夹移动到另一个目录失败,原因是“无法链接到另一个设备上的文件”

2024-10-03 04:28:42 发布

您现在位置:Python中文网/ 问答频道 /正文

关于如何使用Python-ftplib(例如How to move and replace files from FTP folder to another folder in same FTP)将文件从一个位置移动到另一个位置,我遇到了各种各样的答案。我正在尝试将整个文件夹(包括所有子文件夹和文件)移动到其他位置

假设我有一个文件夹/FromPath/MoveThisFolder,这个文件夹可以有未知数量的子文件夹和文件,即/FromPath/MoveThisFolder/A/FromPath/MoveThisFolder/B,它们都包含文件等

我想把MoveThisFolder移到/ToPath,这样我就得到了/ToPath/MoveThisFolder,所有包含的子文件夹和文件都移到了/FromPath/MoveThisFolder中,不再存在了

我怎样才能做到这一点

据我所知,根据Python文档,ftp.rename表示文件:

FTP.rename(fromname, toname)

Rename file fromname on the server to toname.

如果尝试使用ftp.rename(),则会出现无法解决的错误:

ftp.rename(ftp_from_loc, ftp_to_loc)
error_perm: 550 rename: Cannot link to a file on another device.

我还尝试在基于this questionftp.sendcmd()中使用mv,但出现了一个错误

ftp.sendcmd('mv ' + ftp_from_loc + ' ' + ftp_to_loc)

error_perm: 500 'MV /sourcePath/* /destinationPath/': command not understood.

(当然,我已经用虚拟名称替换了实际路径,但是我已经三次检查了路径,它们是正确的)


Tags: 文件tofrom文件夹anotherftpfolderloc
1条回答
网友
1楼 · 发布于 2024-10-03 04:28:42

在大多数系统中,移动/重命名文件或文件夹没有区别。因此FTP.rename也可以用于目录

通常不支持(通常不支持FTP)将文件(或目录)移动到另一个文件系统(仅允许另一个驱动器/设备)。看来这正是你想要的。移动到另一个文件系统并不是真正的移动,它需要复制所有文件并删除原始文件。虽然真正的移动不会复制任何数据,但它只是移动元数据

相关问题 更多 >