from ftplib import FTP
import os
import shutil
import subprocess
def download_ftp_directory(ftp, remote_dir, local_dir):
"""
递归地下载FTP服务器上的目录。
:param ftp: FTP连接对象
:param remote_dir: FTP服务器上的远程目录路径
:param local_dir: 本地目录路径,用于保存下载的文件
"""
if not os.path.exists(local_dir):
os.makedirs(local_dir)
ftp.cwd(remote_dir)
names = ftp.nlst()
for name in names:
remote_path = remote_dir + "/" + name
local_path = os.path.join(local_dir, name)
if ftp.nlst(name) == [name]:
with open(local_path, 'wb') as f:
ftp.retrbinary(f'RETR {name}', f.write)
else:
download_ftp_directory(ftp, remote_path, local_path)
def dwonload_all_results():
computer1 = ['192.168.0.2','n-1','123456','/home/n-1/dest']
computer2 = ['192.168.0.3','n-2','123456','/home/n-2/dest']
computer4 = ['192.168.0.4','n-4','123456','/home/n-4/dest']
config_computers = [computer1,computer2,computer4]
local_root_dir = 'D:\\code\\python\\downloaded_ftp_content'
for computer in config_computers:
ftp_host = computer[0]
ftp_user = computer[1]
ftp_pass = computer[2]
remote_root_dir = computer[3]
ftp = FTP(ftp_host)
ftp.login(user=ftp_user, passwd=ftp_pass)
download_ftp_directory(ftp, remote_root_dir, local_root_dir)
ftp.quit()
print(computer[1]+"下载完成")
def del_all_results():
local_root_dir = 'D:\\code\\python\\downloaded_ftp_content'
shutil.rmtree(local_root_dir)
if __name__ == '__main__':
del_all_results()
dwonload_all_results()