python用ftp批量下载

import pathlib
import sys
from ftplib import FTP


# 1.连接ftp服务
def conn_ftp(ftp_ip, ftp_port, ftp_user, ftp_password):
    ftp = FTP()
    try:
        # 连接ftp
        ftp.connect(ftp_ip, ftp_port)
        # ftp登录
        ftp.login(ftp_user, ftp_password)
    except Exception as e:
        print(e)
    else:
        print(ftp.getwelcome())  # 打印登录后欢迎信息
        return ftp


# 2.获取文件夹的名字(避免文件夹存在空格)
def get_dir_name(name):
    dir_name = ""
    k = 0
    record = ""
    for i in name:
        if record == " " and i != " ":
            k = k + 1
        if k >= 8:
            dir_name = dir_name + i
        record = i
    return dir_name


# 3.下载文件
def download_dir(ftp, path, local_path):
    # 进入指定目录
    ftp.cwd(path)
    dirs = []
    ftp.dir(".", dirs.append)
    for i in dirs:
        try:
            if "drwxr" in i:
                dir_name = get_dir_name(i)
                local_path_new = local_path + "/" + dir_name
                # 本地创建文件夹
                pathlib.Path(local_path_new).mkdir(parents=True, exist_ok=True)
                # 调用下载目录方法
                download_dir(ftp, dir_name, local_path_new)
            else:
                file_name = get_dir_name(i)
                local_filename = local_path + "/" + file_name
                f = open(local_filename, "wb")
                ftp.retrbinary('RETR ' + file_name, f.write)
                f.close()
        except Exception as e:
            print(e)
    ftp.cwd("..")


if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("输入有误,请按以下要求输入")
        print("启动参数请添加远程目录 例如{python Download_File.py  /outOversea01/updates/PC/Shipping/1107.0}")
    else:
        ftp_ip = "10.11.80.80"
        ftp_port = 21
        ftp_user = "tgame"
        ftp_password = "0tXc$dZgC9epb&yX"
        local_path = "D:\ZZ"  # 本地地址
        path = sys.argv[1] # 远程下载地址
        ftp = conn_ftp(ftp_ip, ftp_port, ftp_user, ftp_password)
        download_dir(ftp, path, local_path)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值