V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
piaochen0
V2EX  ›  Python

关于 FTP 命令,非常困惑

  •  
  •   piaochen0 · 2019-09-10 10:49:22 +08:00 · 1989 次点击
    这是一个创建于 1684 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为要使用 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 服务端实现复制文件,使用什么命令?搜了好久了,都没成功的。

    2 条回复    2019-09-10 11:20:24 +08:00
    sujin190
        1
    sujin190  
       2019-09-10 11:14:35 +08:00
    你把 ftp 协议和 ftp 命令混淆了吧
    msg7086
        2
    msg7086  
       2019-09-10 11:20:24 +08:00
    FTP 软件里运行的不是 FTP 指令。
    你要原始 FTP 指令要用 RAW 功能。

    比如你用 lftp 客户端的话,改名是
    mv a b
    但是你要是打 FTP 指令的话,需要
    quote RNFR a
    quote RNTO b
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2923 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 02:54 · PVG 10:54 · LAX 19:54 · JFK 22:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.