因为要使用 python 写一个 FTP 的客户端,使用的 ftplib 库
也看了一些底层的代码。大部分都是通过调用 FTP 命令来操作 FTP 服务端的。
不过在做的过程中,发现对 FTP 命令的方式操作有很大的疑问。
FTP 命令是不是分层的?
例如我要在远程服务器移动某个文件:
在网上搜索的答案如下:
在 FTP 客户端中:
rename /public_html/upload/64/SomeMusic.mp3 /public_html/archive/2011/05/64/SomeMusic.mp3
使用 FTP 命令:
RNFR /public_html/upload/64/SomeMusic.mp3
RNTO /public_html/archive/2011/05/64/SomeMusic.mp3
我在命令行中,使用 ftp ip 登录 ftp 服务器后,使用 rename 命令可以移动,不过 RNFR 和 RNTO 两个命令提示无此命令。
不过使用 rename 命令的时候,还是有输出使用的 RETO。
又如 python 改变文件权限的 python 代码:
_connection.sendcmd('SITE CHMOD %s %s' % (permission, os.path.basename(file_item)))
这行代码的意思应该是使用的 SITE CHMOD 命令来修改权限。
不过在 ftp 命令行里使用 help 命令查看命令列表,却没有 SITE 命令。但这段代码在 python 总是运行成功,复制到命令行中执行,却提示不支持 SITE 命令。
这个我就不是太能理解了。难道 FTP 命令分层的?FTP 命令行包装了一层。底层又运行了一层?还是我理解出了岔子?这个问题太让我困惑了。
PS: 我想在 ftp 服务端实现复制文件,使用什么命令?搜了好久了,都没成功的。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.