gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 05:03:08 25 4
gpt4 key购买 nike

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

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

只有当我在本地机器上提供与 FTP 目录路径相同的目录路径时,我才能下载源文件。

我可以将文件下载到与远程目录 /data/abc/transfer 相同的 C:\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()

original output

expected output

最佳答案

您必须提供打开函数的完整路径,而不仅仅是目录名。

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

像这样:

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

关于python - 使用 Python,如何将多个文件从 FTP 服务器上的子目录下载到本地计算机上的所需目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61893880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com