zoukankan      html  css  js  c++  java
  • 109.网络编程-FTP

    网络编程-FTP

    • FTP:是一种文件传输协议
    • 用途:指定一些特殊的上传下载文件的服务
    • 用户分类(客户端):登录FTP服务器必须的有一个账号
      • Real账户:注册账户
      • Guest账户:临时账户
      • Anonymous账户:匿名账户,允许任何人
    • FTP工作流程:
      1. 客户端链接远程主机上的FTP服务器
      2. 客户端输入用户名和密码
      3. 客户端和服务器进行各种文件传输和信息查询
      4. 客户端从远程FTP服务区推出,结束传输。
    • FTP文件表示:
      • 分三段表示FTP服务器上的文件
      • HOST:主机地址,类似于ftp.mozilla.org,以ftp开头
      • DIR:目录,表示文件所在本地路径
      • File:文件名
      • 如果想完整精确表示ftp上某一个文件,需要上述三部分组合在一起

    FTP包

    • ftplib包

      1. f = ftplib.FTP() 实例化ftp链接
      2. f.set_debuglevel(2) 设置链接级别
      3. ftp.connect("IP","port") 连接的ftp sever和端口
      4. ftp.login("user","password")#连接的用户名,密码,不填就是匿名用户
      5. print"ftp.getwelcome()" 打印出欢迎信息
      6. ftp.cmd("xxx/xxx") 更改远程目录
      7. ftp.retrbinaly("filename.txt",file_handle,bufsize) 接收服务器上文件并写入本地文件
        • filename.txt 需要下载的文件名
        • file_handle = open(filename,"wb").write 以写模式在本地打开文件
        • bufsize=1024 设置的缓冲区大小
      8. ftp.set_debuglevel(0) 关闭调试模式
      9. ftp.quit() 退出ftp
    • ftp相关命令操作

      • ftp.cwd(pathname) 设置FTP当前操作的路径
      • ftp.dir() 显示目录下文件信息
      • ftp.nlst() 获取目录下的文件
      • ftp.mkd(pathname) 新建远程目录
      • ftp.pwd() 返回当前所在位置
      • ftp.rmd(dirname) 删除远程目录
      • ftp.delete(filename) 删除远程文件
      • ftp.rename(fromname, toname) 将fromname修改名称为toname。
      • ftp.storbinaly("STOR filename.txt",file_handel,bufsize) 上传目标文件
      • ftp.retrbinary("RETR filename.txt",file_handel,bufsize) 下载FTP文件
    import ftplib
    import os
    import socket
    
    zjm = "ftp.acc.umu.se"
    ml = "Public/EFLIB"
    wj = "README"
    
    #1.客户端链接远程主机上的FTP服务器
    try:
        f = ftplib.FTP() #实例化FTP链接
        f.set_debuglevel(2) #设置调试级别
        f.connect(zjm) #链接主机地址
    except Exception as err:
        print(err)
        exit()
    print("已连接到主机:{}".format(zjm))
    
    #2.使用用户名和密码登录主机,不填就是匿名登录
    try:
        f.login()
    except Exception as err:
        print(err)
        exit()
    print("已使用anonymous(匿名登录)")
    
    #3.客户端和服务器进行文件传输和操作
    try:
        f.cwd(ml) #改变文件目录
    except Exception as err:
        print(err)
        exit()
    print("已改变目录到:{}".format(ml))
    
    try:
        #从FTP服务器下载文件
        #RETR 是ftp命令
        #第二个参数是返回函数
        #执行RETR命令,下载文件到本地后,运行返回函数
        f.retrbinary("RETR {}".format(wj), open(wj, "wb").write)
    except Exception as err:
        print(err)
        exit()
    
    #4. 结束链接
    f.quit()
    
  • 相关阅读:
    【flutter BottomNavigationBar 】selectedLabelStyle: TextStyle(fontSize: 22) 更新后使用方法
    学术论文中的参考文献格式
    word2016中写出伪代码
    基于RPLiDAR A2的cartographer建图
    第 7 章 系统效果评测与监控
    Linux TOP 命令详解
    mysql-canal-rabbitmq 安装部署教程
    第 6 章 用户画像系统
    Elasticsearch 模块
    Kibana 插件环境搭建教程
  • 原文地址:https://www.cnblogs.com/TK-tank/p/12330372.html
Copyright © 2011-2022 走看看