使用Python,如何将多个文件从FTP目录服务器下载到我们本地计算机上的所需目录中??]

问题描述 投票:0回答:1

[original outputexpected outputpath logic to save file in local directoryprinting local_pathlocal_path-before-os.path.join

我是Python的新手。使用python程序,我能够从FTP服务器(使用Paramiko,ftplib,os库)将多个源文件下载到本地计算机。

这些源文件位于FTP服务器内部的特定目录中。

仅当我在本地计算机中提供了与FTP目录路径相同的目录路径时,才能够下载源文件。>

我能够将文件下载到与远程目录相同的C:\ data \ abc \ transfer中。代码要求我提供相同的目录。

但是我想将所有文件下载到所需目录C:\ data_download \请帮助我。

下面是代码:

    import paramiko
    import ftplib
    import os
    from ftplib import FTP
    from paramiko import sftp , pkey
    Ftp_Server_host ='[email protected]'
    Ftp_username ='qsdfg12'
    Ftp_password='xxxxx'
    Ftp_source_files_path = '/data/abc/transfer/'
    ftp =FTP(Ftp_Server_host)
    ftp.login(user=Ftp_username,passwd=Ftp_password)
    local_path ='C:\data_download\'
    ftp_ssh = paramiko.SSHClient()
    ftp_ssh.load_system_host_keys()
    ftp_ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ftp_ssh.connect(hostname=Ftp_Server_host,username=Ftp_username,password=Ftp_password)
    print("connected to remote server :" +Ftp_Server_host)
    print()
    ftp_clnt = ftp_ssh.open_sftp()
    ftp_clnt.chdir(Ftp_source_files_path)
    print("current directory of source file in remote server :" +ftp_clnt.getcwd())
    print()
    files_list = ftp.nlst(Ftp_source_files_path)
    for file in files_list:
        print("local_path :" +local_path)
        local_fn = os.path.join(local_path,file)
         print(local_fn)
         print('Downloading files from remote server :' +file)
         local_file = open (local_fn ,"wb")
         ftp.retrbinary("RETR "+file, local_file.write)
         local_file.close()
         print()
   print("respective files got downloaded")
   print()
   ftp_clnt.close()
   ftp_ssh.close()

原始输出预期输出路径逻辑,用于将文件保存在本地目录中,打印出local_path local_path-before-os.path.join我是Python的新手。使用python程序,我能够下载...

python directory paramiko ftplib chdir
1个回答
0
投票
您必须提供open功能的完整路径,而不仅仅是目录名称。

要组装完整的本地路径,请从ftp.nlst返回的远程路径中获取文件名,并将它们与目标本地目录路径合并。

© www.soinside.com 2019 - 2024. All rights reserved.