python - 使用 Python,如何将 FTP 服务器上的子目录中的多个文件下载到本地机器上所需的目录中?
问题描述
使用 python 程序,我能够从 FTP 服务器(使用ftplib
和os
库)下载多个源文件到我的本地机器。
这些源文件位于 FTP 服务器内的特定目录中。
仅当我在本地计算机中提供了与 FTP 目录路径相同的目录路径时,我才能下载源文件。
我能够下载C:\data\abc\transfer
与远程目录相同的文件/data/abc/transfer
。代码坚持让我提供相同的目录。
但我想将所有文件下载到我想要的目录中C:\data_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()
解决方案
您必须提供完整的open
功能路径,而不仅仅是目录名称。
要组装完整的本地路径,请从返回的远程路径中获取文件名,ftp.nlst
并将它们与目标本地目录路径组合。
像这样:
local_fn = os.path.join(local_path, os.path.basename(file))
推荐阅读
- php - 检索新的数据库记录
- reactjs - 获取发送空的帖子参数 - 反应原生
- c# - 使用图像路径显示图像不起作用
- django - django inlineformset 中的动态额外字段
- d3.js - d3v4 扭曲饼图转换
- javascript - NodeJS 从 DB 1 中检索记录 1 与全部
- python-3.x - 将字典列表的字符串表示形式转换为字典列表
- angular - Angular 通过输入中的 id 从数组中获取对象
- android - Android 模拟器没有与我的 React Native 应用程序一起运行
- postgresql - Odoo 12 数据库连接超时与繁重的 cron 作业