python实现windows ftp下载多台linux上的文件

from ftplib import FTP
import os
import shutil
import subprocess
def download_ftp_directory(ftp, remote_dir, local_dir):
    """
    递归地下载FTP服务器上的目录。

    :param ftp: FTP连接对象
    :param remote_dir: FTP服务器上的远程目录路径
    :param local_dir: 本地目录路径,用于保存下载的文件
    """
    # 确保本地目录存在
    if not os.path.exists(local_dir):
        os.makedirs(local_dir)

        # 切换到FTP服务器上的远程目录
    # print(ftp.pwd())
    # print(remote_dir)
    # print(local_dir)
    ftp.cwd(remote_dir)
    # 获取远程目录中的文件和子目录列表
    names = ftp.nlst()

    # 遍历文件和子目录
    for name in names:
        # 构建完整的远程和本地路径
        remote_path = remote_dir + "/" + name
        local_path = os.path.join(local_dir, name)

        # 如果是文件,则下载
        if ftp.nlst(name) == [name]:  # 简单的检查,看是否有以该名称为前缀的子目录
            with open(local_path, 'wb') as f:
                ftp.retrbinary(f'RETR {name}', f.write)
                # 如果是子目录,则递归下载
        else:
            download_ftp_directory(ftp, remote_path, local_path)

        # FTP连接信息

def dwonload_all_results():
    computer1 = ['192.168.0.2','n-1','123456','/home/n-1/dest']
    computer2 = ['192.168.0.3','n-2','123456','/home/n-2/dest']
    computer4 = ['192.168.0.4','n-4','123456','/home/n-4/dest']
    config_computers = [computer1,computer2,computer4]
    local_root_dir = 'D:\\code\\python\\downloaded_ftp_content'  # 本地保存目录
    for computer in config_computers:
        ftp_host = computer[0]
        ftp_user = computer[1]
        ftp_pass = computer[2]
        remote_root_dir = computer[3]
        # 连接到FTP服务器
        ftp = FTP(ftp_host)
        ftp.login(user=ftp_user, passwd=ftp_pass)
        # 下载整个目录
        download_ftp_directory(ftp, remote_root_dir, local_root_dir)
        # 关闭FTP连接
        ftp.quit()
        print(computer[1]+"下载完成")
def del_all_results():
    local_root_dir = 'D:\\code\\python\\downloaded_ftp_content'
    shutil.rmtree(local_root_dir)

if __name__ == '__main__':
    del_all_results()
    dwonload_all_results()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值