使用Python通过FTP下载整个目录

使用Python通过FTP下载整个目录,python,ftp,Python,Ftp,试图整合我的第一个有用的Python程序,目的是自动化我的网站备份。我看了一个关于如何下载单个文件的教程,但当涉及到文件夹时,我就不太清楚了。我想通过FTP从我的网站创建整个文件夹的本地备份 到目前为止,在以下方面的帮助下,我已经得出了这个结论: 我不愿意运行它,因为如果它是错误的,我不想在我的网站上制造问题。我应该注意,本地文件的文件名和扩展名应该与正在下载的远程文件的文件名和扩展名完全匹配 感谢您的指导 您无需更改工作目录,只需将文件保存在指定路径中即可 下载文件时,首先需要获得文件名列表:

试图整合我的第一个有用的Python程序,目的是自动化我的网站备份。我看了一个关于如何下载单个文件的教程,但当涉及到文件夹时,我就不太清楚了。我想通过FTP从我的网站创建整个文件夹的本地备份

到目前为止,在以下方面的帮助下,我已经得出了这个结论:

我不愿意运行它,因为如果它是错误的,我不想在我的网站上制造问题。我应该注意,本地文件的文件名和扩展名应该与正在下载的远程文件的文件名和扩展名完全匹配


感谢您的指导

您无需更改工作目录,只需将文件保存在指定路径中即可

下载文件时,首先需要获得文件名列表:

file_list = []
ftp.retrlines('LIST', lambda x: file_list.append(x.split()))
然后从目录中分离文件并下载:

for info in file_list:
    ls_type, name = info[0], info[-1]
    if not ls_type.startswith('d'):
        with open(name, 'wb') as f:
            ftp.retrbinary('RETR {}'.format(f), f.write)

在最后一行,
ftp.retrbinary('RETR{}.fromat(f),f.write)
我想你的意思是
.format(f)
,而不是
fromat(f)
@Frank Yep,谢谢你的评论。
for info in file_list:
    ls_type, name = info[0], info[-1]
    if not ls_type.startswith('d'):
        with open(name, 'wb') as f:
            ftp.retrbinary('RETR {}'.format(f), f.write)