当前位置 主页 > 服务器问题 > Linux/apache问题 >

    Python FtpLib模块应用操作详解

    栏目:Linux/apache问题 时间:2019-12-12 15:46

    本文实例讲述了Python FtpLib模块应用操作。分享给大家供大家参考,具体如下:

    Python之FtpLib模块应用

    工厂中有这样的应用场景: 需要不间断地把设备电脑生成的数据文件上传到远程文件存储服务器NAS中。

    在python自带的标准库中找到ftplib模块,可以帮助实现文件的上传。

    场景功能的实现需要做到以下几点:

    给定本地路径,上传范围是否包含子文件夹及其文件 限定或不限定 哪些文件类型的文件,文件名包含哪些字符串的文件 文件上传后,本地是否要保留 扫完一次本地路径,进行下次循环的间隔周期 生成log日志方便查看报错与已上传的文件,日志文件保留多久之后要删除

    思路是这样子,以上内容设计成一个config 文件进行管控。

    1.config.xml文件设置

    <?xml version="1.0"?>
    <Config>
     <ServerIP>10.16.xx.xx</ServerIP>
     <UserID>cc</UserID>
     <Passwd>xxx</Passwd>
     <LogBackupDay>10</LogBackupDay>
     <UploadCheck>TRUE</UploadCheck>
     <Loop_Sec>30</Loop_Sec>
     <LocalDirectory>C:\Users\Administrator\Desktop\TEST\</LocalDirectory>
     <RemoteDirectory>/DATA/AOI/T1TEST200/</RemoteDirectory>
     <FileExtension>csv</FileExtension>
     <FileNameContain>*</FileNameContain>
     <SubDirectoryCheck>TRUE</SubDirectoryCheck>
     <SubDirectoryCreateCheck>FALSE</SubDirectoryCreateCheck>
     <LocalFileBackupCheck>TRUE</LocalFileBackupCheck>
     <FileCreateTime>80</FileCreateTime>
    </Config>
    
    
    LogBackupDay 日志保留天数 UploadCheck 是否开启上传 Loop_Sec 扫描循环周期 LocalDirectory 本地路径,结尾必须有路径分隔符 RemoteDirectory 远程路径,结尾必须有路径分隔符 FileExtension 文件类型,jpg,txt,py,log等等,为*时不限制文件类型 FileNameContain 文件名字符串 , 文件名包含哪些字符串的文件,为*时不限制文件名 SubDirectoryCheck 子文件夹的文件是否上传 SubDirectoryCreateCheck 远程路径是否创建和本地路径一样的文件夹 LocalFileBackupCheck 本地文件是否保留 FIleCreateTime 扫描本地路径中创建时间为多少个小时内的文件或文件夹

    以下是读取config.xml的代码

    from xml.dom.minidom import parse
    def readConfig():
      '''读取上传配置'''
      conf=parse(os.getcwd()+os.sep+'config.xml');#config文件与程序放在同一目录
      host=conf.getElementsByTagName("ServerIP")[0].firstChild.data
      username =conf.getElementsByTagName("UserID")[0].firstChild.data
      passwd=conf.getElementsByTagName("Passwd")[0].firstChild.data
      logBackupDay=int(conf.getElementsByTagName("LogBackupDay")[0].firstChild.data)
      uploadCheck=conf.getElementsByTagName("UploadCheck")[0].firstChild.data
      uploadLoopTime=int(conf.getElementsByTagName("Loop_Sec")[0].firstChild.data)
      localDir=conf.getElementsByTagName("LocalDirectory")[0].firstChild.data
      remoteDir=conf.getElementsByTagName("RemoteDirectory")[0].firstChild.data
      fileExtension=conf.getElementsByTagName("FileExtension")[0].firstChild.data
      fileNameContain=conf.getElementsByTagName("TxtFileNameContain")[0].firstChild.data
      subDirCheck=conf.getElementsByTagName("SubDirectoryCheck")[0].firstChild.data
      subDirCreateCheck=conf.getElementsByTagName("SubDirectoryCreateCheck")[0].firstChild.data
      backupCheck=conf.getElementsByTagName("LocalFileBackupCheck")[0].firstChild.data
      fileCreateTime=int(conf.getElementsByTagName("FileCreateTime")[0].firstChild.data)
      conflist=[host,username,passwd,logBackupDay,uploadCheck,uploadLoopTime,
           localDir,remoteDir,fileExtension,fileNameContain,
           subDirCheck,subDirCreateCheck,backupCheck,fileCreateTime]
      return conflist