ftplib模块
ftp.login登录
ftp.retrbinary下载
# coding = utf8
from ftplib import FTP
# 主程序
# class FTP_OP(object):
# def __init__(self):
"""初始化ftp"""
hostIP = '0.0.0.0'
username = username
passwd = passwd
def ftp_connect():
try:
"""连接ftp:return:"""
ftp = FTP(hostIP) # 连接远程服务器IP地址
ftp.encoding = 'utf-8' # 解决中文乱码问题
ftp.set_debuglevel(1) # 不开启调试模式
ftp.login(username, passwd) # 登录ftp
# print(ftp.getwelcome()) # ftp服务器欢迎语
except Exception as e:
print(e)
return None
else:
return ftp
def read_file(root_path, batch):
ftp = ftp_connect() # 连接ftp
# 读取目标路径文件
# nlst_list = ftp.nlst(ftp_file_path) # nlst只显示文件的列表
# mlsd每个迭代格式为 (‘filename’,{'type':'dir','size':1021,'modify':'20201111'})
mlsd_list = ftp.mlsd(root_path) # 文件和路径 返回一个迭代器
for fileinfo in mlsd_list: # 遍历 mlsd
filename = fileinfo[0] # 文件名
# print('filename:', filename)
if filename == '.': # 隐藏路径 忽略跳过
continue
else:
# 查看是文件还是目录
filetype = fileinfo[1]['type']
# 是目录就重新迭 ===>> 二代目录文件路径 为根目录+子目录
if filetype == 'dir':
pass
# 是文件就下载 ===>> 一代目录下文件路径 为根目录
else:
# ftp服务器上文件的路径
ftpfile = '%s/%s' % (root_path, filename)
# 本地文件下载保存的路径
write_path = 'c:/file/%s' % (root_path)
# 本地文件下载写入的路径文件
writefile = '%s/%s' % (write_path, filename)
with open(writefile, "wb") as f:
ftp.retrbinary('RETR %s' % ftpfile, f.write)
版权声明:本文为qq_43152507原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。