zoukankan      html  css  js  c++  java
  • Python 使用 FTP 协议上传下载文件 之 ftplib

    Python 搭建 ftp 服务器

    实验未成功,先记下代码,后面看看如何修改

    from pyftpdlib.authorizers import DummyAuthorizer
    from pyftpdlib.handlers  import FTPHandler
    from pyftpdlib.servers import FTPServer
    
    # 实例化DummyAuthorizer来创建ftp用户
    authorizer = DummyAuthorizer()
    # 参数:用户名,密码,目录,权限
    authorizer.add_user('test', '258', r'C:Users', perm='elradfmwMT')
    # 匿名登录
    # authorizer.add_anonymous('/home/nobody')
    handler = FTPHandler
    handler.authorizer = authorizer
    # 参数:IP,端口,handler
    server = FTPServer(('10.7.133.47', 21), handler)    #设置为0.0.0.0为本机的IP地址
    server.serve_forever()

    上传下载单个文件

    from ftplib import FTP
    
    ### 连接服务器
    ftp = FTP()                         # 设置变量
    # ftp.set_debuglevel(2)         # 打开调试级别,2显示详细信息,0关闭调试模式
    ftp.connect('10.68.3.137', 21)       # 连接的ftp sever和端口
    ftp.login('ftpsafe', 'work1,hard')  # 用户名,密码,如果匿名登录则用空串代替即可
    
    
    ### 上传文件
    bufsize = 1024
    fp = open('test.txt', 'rb') # 本地文件
    cmd = 'STOR 01/test2.txt'   # 上传后的文件名
    ftp.storbinary(cmd, fp, bufsize)     # storbinary是以二进制形式上传文件
    # cmd: STOR命令,是FTP的一个命令,后面需要加上保存文件的路径及文件名
    # fp: 一个打开的文件对象,‘rb’,以二进制形式打开文件
    
    
    ### 下载文件
    bufsize = 1024
    file_handle = open('new.txt', 'wb')   # 以写模式在本地打开文件
    ftp.retrbinary('RETR' + '01/test2.txt', fp.write, bufsize)  # 接收服务器上文件并写入本地文件

    其他操作

    ftp.set_debuglevel(2) # 打开调试级别2,显示详细信息
    ftp.set_debuglevel(0) # 关闭调试模式
    ftp.set_pasv(0) #0主动模式 1 #被动模式
    print(ftp.getwelcome()) #打印出欢迎信息
    
    ftp.cwd('/upload/')     # 切换到指定路径
    ftp.pwd() # 返回当前所在位置
    ftp.dir()       # 显示目录下文件信息, 类似 ls
    ftp.mkd(pathname) # 新建远程目录
    ftp.rmd(dirname) # 删除远程目录
    filename_list = ftp.nlst()  # 返回一个文件名列表
    ## 参数为空代表当前目录,也可指定目录
    ## 只输出第一层文件列表
    
    ftp.delete(filename) # 删除远程文件
    ftp.rename(fromname, toname) # 将fromname修改名称为toname
    
    ftp.quit() # 退出ftp

    更多用法见参考资料

    参考资料:

    https://www.cnblogs.com/huzixia/p/10389945.html#label1  Python实现FTP服务功能

    https://blog.csdn.net/ouyang_peng/article/details/79271113  Python实现的FTP上传和下载功能

    https://blog.csdn.net/qq_21422005/article/details/84546973

  • 相关阅读:
    华为的管理变革之路
    产品创新型组织变革的四个阶段
    新产品如何在市场上快速取得成功?
    如何做好基础技术的创新?
    产品创新型总经理应具备哪些方面的素质?
    项目型组织如何快速过渡到产品型组织?
    华为是如何做技术规划和产品路标开发的?
    华为干部选拔和任用的标准
    导论:1、大学计算机——2、计算机信息数字化基础——二进制&数字化(数制)
    导论:1、大学计算机——1、计算机与问题求解
  • 原文地址:https://www.cnblogs.com/yanshw/p/14781403.html
Copyright © 2011-2022 走看看