首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
V2EX  ›  Python

关于 FTP 命令,非常困惑

  •  
  •   piaochen0 · 12 天前 · 832 次点击

    因为要使用 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
        1
    sujin190   12 天前
    你把 ftp 协议和 ftp 命令混淆了吧
        2
    msg7086   12 天前
    FTP 软件里运行的不是 FTP 指令。
    你要原始 FTP 指令要用 RAW 功能。

    比如你用 lftp 客户端的话,改名是
    mv a b
    但是你要是打 FTP 指令的话,需要
    quote RNFR a
    quote RNTO b
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   763 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 20:21 · PVG 04:21 · LAX 13:21 · JFK 16:21
    ♥ Do have faith in what you're doing.