import pathlib
import sys
from ftplib import FTP
# 1.连接ftp服务
def conn_ftp(ftp_ip, ftp_port, ftp_user, ftp_password):
ftp = FTP()
try:
# 连接ftp
ftp.connect(ftp_ip, ftp_port)
# ftp登录
ftp.login(ftp_user, ftp_password)
except Exception as e:
print(e)
else:
print(ftp.getwelcome()) # 打印登录后欢迎信息
return ftp
# 2.获取文件夹的名字(避免文件夹存在空格)
def get_dir_name(name):
dir_name = ""
k = 0
record = ""
for i in name:
if record == " " and i != " ":
k = k + 1
if k >= 8:
dir_name = dir_name + i
record = i
return dir_name
# 3.下载文件
def download_dir(ftp, path, local_path):
# 进入指定目录
ftp.cwd(path)
dirs = []
ftp.dir(".", dirs.append)
for i in dirs:
try:
if "drwxr" in i:
dir_name = get_dir_name(i)
local_path_new = local_path + "/" + dir_name
# 本地创建文件夹
pathlib.Path(local_path_new).mkdir(parents=True, exist_ok=True)
# 调用下载目录方法
download_dir(ftp, dir_name, local_path_new)
else:
file_name = get_dir_name(i)
local_filename = local_path + "/" + file_name
f = open(local_filename, "wb")
ftp.retrbinary('RETR ' + file_name, f.write)
f.close()
except Exception as e:
print(e)
ftp.cwd("..")
if __name__ == "__main__":
if len(sys.argv) != 2:
print("输入有误,请按以下要求输入")
print("启动参数请添加远程目录 例如{python Download_File.py /outOversea01/updates/PC/Shipping/1107.0}")
else:
ftp_ip = "10.11.80.80"
ftp_port = 21
ftp_user = "tgame"
ftp_password = "0tXc$dZgC9epb&yX"
local_path = "D:\ZZ" # 本地地址
path = sys.argv[1] # 远程下载地址
ftp = conn_ftp(ftp_ip, ftp_port, ftp_user, ftp_password)
download_dir(ftp, path, local_path)
python用ftp批量下载
最新推荐文章于 2025-03-10 19:55:50 发布