【python路上小记】连接FTP服务器,下载文件

  • Post author:
  • Post category:python




ftplib模块



ftp.login登录


ftp.retrbinary下载
# coding = utf8
from ftplib import FTP

# 主程序
# class FTP_OP(object):
#     def __init__(self):
"""初始化ftp"""

hostIP = '0.0.0.0'
username = username
passwd =  passwd

def ftp_connect():
    try:
        """连接ftp:return:"""
        ftp = FTP(hostIP)  # 连接远程服务器IP地址
        ftp.encoding = 'utf-8'  # 解决中文乱码问题
        ftp.set_debuglevel(1)  # 不开启调试模式
        ftp.login(username, passwd)  # 登录ftp
        # print(ftp.getwelcome())	# ftp服务器欢迎语
    except Exception as e:
        print(e)
        return None
    else:
        return ftp

def read_file(root_path, batch):
    ftp = ftp_connect() # 连接ftp
    # 读取目标路径文件
    # nlst_list = ftp.nlst(ftp_file_path)     # nlst只显示文件的列表
    # mlsd每个迭代格式为 (‘filename’,{'type':'dir','size':1021,'modify':'20201111'})
    mlsd_list = ftp.mlsd(root_path)  # 文件和路径 返回一个迭代器
    for fileinfo in mlsd_list:  # 遍历 mlsd
        filename = fileinfo[0]  # 文件名
        # print('filename:', filename)
        if filename == '.':  # 隐藏路径 忽略跳过
            continue
        else:
            # 查看是文件还是目录
            filetype = fileinfo[1]['type']
            # 是目录就重新迭 ===>> 二代目录文件路径 为根目录+子目录
            if filetype == 'dir':  
                pass
            # 是文件就下载 ===>> 一代目录下文件路径 为根目录
            else:  
                # ftp服务器上文件的路径
                ftpfile = '%s/%s' % (root_path, filename)
                # 本地文件下载保存的路径
                write_path = 'c:/file/%s' % (root_path)
                # 本地文件下载写入的路径文件
                writefile = '%s/%s' % (write_path, filename)
                with open(writefile, "wb") as f:
                    ftp.retrbinary('RETR %s' % ftpfile, f.write)



版权声明:本文为qq_43152507原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。