尝试整理我的第一个有用的Python程序,目的是自动化我的网站备份。我看了一个关于如何下载单个文件的教程,但是当涉及到一个文件夹时我不太清楚。我想通过FTP从我的网站创建整个文件夹的本地备份。
到目前为止,我在this question的帮助下提出了这个问题:
from ftplib import FTP
import os
ftp=FTP("ftp.xxxxxxxxx.com")
ftp.login("xxxxxxxxxxx","xxxxxxxxxx") #login to FTP account
print "Successfully logged in"
ftp.cwd("public_html") #change working directory to \public_html\
filenames = ftp.nlst() #create variable to store contents of \public_html\
os.makedirs("C:\\Users\\xxxxxx\\Desktop\\Backup")#create local backup directory
os.chdir("C:\\Users\\xxxxxx\\Desktop\\Backup")#change working directory to local backup directory
#for loop to download each file individually
for a in filenames:
ftp.retrbinary("RETR " + a, file.write)
file.close()
ftp.close() #CLOSE THE FTP CONNECTION
print "FTP connection closed. Goodbye"
我不愿意运行它,因为我不想在我的网站上创建问题,如果它错了。我应该注意文件名&本地文件的扩展名应与正在下载的远程文件的扩展名完全匹配。
任何指导赞赏!
答案 0 :(得分:2)
您无需更改工作目录,只需将文件保存在预期路径中即可。
要下载文件,首先需要获取文件名列表:
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)