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

使用Python,如何将多个文件从FTP服务器上的子目录下载到本地计算机上所需的目录中?,python,ftplib,chdir,Python,Ftplib,Chdir,使用python程序,我能够从FTP服务器(使用ftplib和os库)下载多个源文件到本地机器 这些源文件位于FTP服务器内的特定目录中 只有在本地计算机中提供了与FTP目录路径相同的目录路径时,我才能下载源文件 我可以将文件下载到C:\data\abc\transfer,它与远程目录/data/abc/transfer相同。代码要求我提供相同的目录 但是我想将所有文件下载到我想要的目录C:\data\u download\ 代码如下: import ftplib import os from

使用python程序,我能够从FTP服务器(使用
ftplib
os
库)下载多个源文件到本地机器

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

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

我可以将文件下载到
C:\data\abc\transfer
,它与远程目录
/data/abc/transfer
相同。代码要求我提供相同的目录

但是我想将所有文件下载到我想要的目录
C:\data\u download\

代码如下:

import ftplib
import os
from ftplib import FTP

Ftp_Server_host = 'xcfgn@wer.com'
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\\'
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)
    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.nlst
返回的远程路径中获取一个文件名,并将它们与目标本地目录路径组合

像这样:

local_fn = os.path.join(local_path, os.path.basename(file))

它成功了,非常感谢你。。代码运行成功,结果令人满意。再次感谢。