首页 > 编程语言 >使用Python ftplib库进行封装FTP自动下载

使用Python ftplib库进行封装FTP自动下载

时间:2024-10-23 14:49:22浏览次数:8  
标签:ftplib remote FTP Python self param file ftp

from ftplib import FTP
from baseapi.logger import MyLogger

logger = MyLogger.get_logger()

class FTPUtils:

    ftp = FTP()
    ftp.set_pasv(False)
    def __init__(self, username, password, host, port=21):
        """
        用于FTP站点初始化
        :param username: FTP用户名
        :param password: FTP密码
        :param host: FTP站点地址
        :param port: FTP站点端口
        """
        self.ftp.connect(host, port, timeout=30)
        self.ftp.login(username, password)
        logger.info("FTP init success")

    def remote_file_exists(self, remote_file, remote_path):
        """
        用于FTP站点目标文件存在检测
        :param remote_file: 目标文件名
        :param remote_path: 目标路径
        :return: True/False
        """
        self.ftp.cwd(remote_path)  # 进入目标目录
        remote_file_names = self.ftp.nlst()  # 获取文件列表
        if remote_file in remote_file_names:
            logger.info(f"{remote_file} exists in {remote_path}")
            return True
        else:
            logger.info(f"{remote_file} exists not in {remote_path}")
            return False

    def download_file(self, local_file, remote_file):
        """
        用于目标文件下载
        :param local_file: 本地文件名
        :param remote_file: 远程文件名
        """
        logger.info(f"Download {remote_file} to {local_file}")
        with open(local_file, 'wb') as fp:
            self.ftp.retrbinary(f'RETR {remote_file}', fp.write)

    def quit_ftp(self):
        """
        用于FTP退出
        """
        self.ftp.quit()
        logger.info("FTP quit success")

标签:ftplib,remote,FTP,Python,self,param,file,ftp
From: https://www.cnblogs.com/xxiaow/p/18496368

相关文章

  • Python爬虫:API接口数据的“美食侦探”
    亲爱的代码美食家们,今天咱们不聊那些让人头秃的bug,也不谈那些让人眼花的架构图。咱们来聊聊那些在代码世界里寻找美食的“美食侦探”——Python爬虫。Python爬虫:API接口数据的“美食侦探”想象一下,你在代码的世界里,遇到了一个充满美食的餐厅——一个提供丰富数据的API接口。......
  • 基于Django+Python的宾馆管理系统设计与实现
    项目运行需要先安装Python的相关依赖:pymysql,Django==3.2.8,pillow使用pipinstall安装第一步:创建数据库第二步:执行SQL语句,.sql文件,运行该文件中的SQL语句第三步:修改源代码中的settings.py文件,改成自己的mysql数据库用户名和密码第四步:运行命令:pythonmanage.pyrunser......
  • Python的京东探险记:揭秘商品详情的快速通道
    在一个充满无限可能的数字世界里,Python,这位编程界的多面手,正准备踏上一场刺激的探险之旅:快速获取京东商品的详情数据。这不仅是一次技术的挑战,更是一次与时间赛跑的较量。!Python先生,这位机智的代码探险家,打开了他的笔记本电脑,准备开始这场冒险。他知道,要快速获取京东的商品详情......
  • 22年计挑赛Python组区域赛个人解答
    第一题:代码部分:生产问题A=100;B=150;List=[]a,b,c,d,e,f,g,h,i=map(int,input().split())list=[a,b,c,d,e,f,g,h,i]forminrange(min(g//a,h//b,i//c)+1):n=min((g-m*a)//e,(h-m*b)//f,(i-m*c)//f)w=A*m+B*nList.append(w);List.append(m);......
  • 【python学习记录篇】08.for、while、break、continue,在python里的使用比在英语阅读理
    小白学习纪实,跨专业学python的第八天~睡了一觉起来觉得自己又行了~   8.1循环    很多情况下,我们会比较讨厌重复着做着相同的事情,因为这样枯燥乏味。很直接的,在我们睡不着失眠的时候,我们会选择重复数绵羊加速我们睡眠。对于程序员来讲同样不喜欢重复地做......
  • 【python学习记录篇】09.Python函数进阶,上难度了上难度了
    小白学习纪实,跨专业学python的第九天~没想到python也要学函数......真是干的漂亮......    9.1函数    9.1.1函数的意义    在生活中,试想一下我们用手洗衣服的时候,我们需要接水,放入脏衣服,放入洗衣液,然后一件件用手搓,每次洗衣服的时候都要这样干,很......
  • Python脚本,它将遍历指定目录下的所有.srt文件,移除其中的不必要的英文字符、不必要的空
    Python脚本,它将遍历指定目录下的所有.srt文件,移除其中的不必要的英文字符、不必要的空行以及不必要的空格。该脚本会保留字幕索引、字幕时间线以及字幕中的中文内容,并且只保留字幕中的中文内容。它还会保留字幕行与字幕之间的换行符,同时去掉字幕与字幕之间的不必要的换行符。处理......
  • Python酷库之旅-第三方库Pandas(162)
    目录一、用法精讲741、pandas.Period.month属性741-1、语法741-2、参数741-3、功能741-4、返回值741-5、说明741-6、用法741-6-1、数据准备741-6-2、代码示例741-6-3、结果输出742、pandas.Period.ordinal属性742-1、语法742-2、参数742-3、功能742-4、返回值......
  • DictProxy和dict的内存大小_python_如何最小的保存dict_20241023
    缘由:在写多进程的时候,进程之间要用到共享变量,Manager,于是发现了一种新的数据类型:multiprocessing.managers.DictProxy简单来说,这种数据类型特点是,只读模式,内存占用的更少,平均减少了四分之一,最高测试可以减少到1/20,配合pickle.dumps来使用,那么存到本地的文件原本可能是......
  • 原创计算机毕业设计—69271 django重大公告卫生事件物资管理系统 (源码免费领)定制程序
    摘要随着信息技术的快速发展,计算机应用已经进入成千上万的家庭。随着物资数量的增加,物资库存管理也存在许多问题。物资数据的处理量正在迅速增加,原来的手工管理模式不适合这种形式。使用计算机可以完成数据收集、处理和分析,减少人力和物力的浪费。需要建立重大公告卫生事件......