Python FTP两个文件夹间的同步实例代码

  

具体代码如下所示:

        # - * -编码:utf - 8 - *   ”“”   ftp自动检测源文件夹的更新,将源文件夹更新的内容拷贝到目标文件夹中   使用树的层序遍历算法,支持深度目录拷贝   “‘   进口操作系统   从ftplib进口FTP   导入系统,系统,字符串,日期时间,时间   进口shutil   进口套接字   类MyUpdateMonitor(对象):   def __init__(自我,hostaddr,用户名、密码、remotedir_old remotedir_new,端口=21):   自我。hostaddr=hostaddr   自我。用户名=用户名   自我。密码=密码   自我。remotedir_old=remotedir_old   自我。remotedir_new=remotedir_new   #自我。端口=端口   自我。ftp=ftp ()   #源文件文件队列   自我。FolderListOld=[]   #目标文件文件队列   自我。FolderListNew=[]   def __del__(自我):   self.ftp.close ()   self.FolderListOld.clear ()   self.FolderListNew.clear ()   def FtpLogin(自我):   ftp=self.ftp   试一试:   超时=300   socket.setdefaulttimeout(超时)   ftp.set_pasv(真正的)   打印你的开始连接到% s的% (hostaddr)   ftp.connect (hostaddr)   打印你的成功连接到% s的% (hostaddr)   打印你的开始登录到% s的% (hostaddr)   ftp。登录(用户名、密码)   打印你的成功登录到% s的% (hostaddr)   ftp.getwelcome ()   除了例外,e:   打印:发现异常,e   #使用树的层序遍历来检查文件目录   def LevelOrderFolder(自我):   #新增文件起始位置和终止位置=0开始   结束=0   试一试:   #将根目录放入队列中   self.FolderListOld.append (self.remotedir_old)   self.FolderListNew.append (self.remotedir_new)   虽然不是(0==len (self.FolderListOld)):   结束=开始   #将文件夹下的文件全部压入队列   如果os.path.isdir (self.FolderListOld [0]):   文件=os.listdir (self.FolderListOld [0])   文件的文件:   self.FolderListOld.append (os.path.join(自我。FolderListOld[0]、文件)   #确定新增文件在队列中的位置   +=结束len(文件)   #将已经查看的文件夹删除   德尔self.FolderListOld [0]   #检查目标文件夹该级目录   如果os.path.isdir (self.FolderListNew [0]):   #将该级目录的文件都列出   文件=os.listdir (self.FolderListNew [0])   #检查源文件该级目录下的文件在目标该级目录下是否有   文件在self.FolderListOld[开始:结束):   temp=file.split (“\ \”)   如果临时文件[1]:   #这里判断文件大小是否一致,不一致拷过去   如果os.path.isfile(文件),而不是os.path.getsize(文件)==os.path.getsize (os.path.join(自我。FolderListNew[0],临时[1])):   打印的找到文件(% s)大小改变了!文件\ n ' %   #打印r 'Start删除。\ n '   # os.remove (os.path.join(自我。FolderListNew[0],临时[1]))   #打印r 'delete结束…\ n '   打印“开始复制。\ n”   shutil。拷贝文件(文件,os.path.join(自我。FolderListNew[0],临时[1]))   打印“复制/璡 n”   # #如果是文件夹存在,但是修改过,没有必要全部拷贝文件夹,可以到文件夹中拷贝单个文件   #如果os.path.isfile(文件),而不是(os.path.getmtime(文件)==os.path.getmtime (os.path.join(自我。FolderListNew[0],临时[1]))):   #打印'找到文件(% s)大小改变了!文件\ n ' %   # changetime=os.path.getmtime(文件)#以毫秒为单位的时间,自1970年开始到现今   # changetime=浮动(changetime)   #印刷改变时间,时间。strftime (“% Y - % m - H % d %: % m: % S的,time.gmtime (changetime)), r ' \ n '   #   #打印“开始复制。\ n”   # shutil。拷贝文件(文件,os.path.join(自我。FolderListNew[0],临时[1]))   #打印“复制/璡 n”   其他:   如果os.path.isdir(文件):   #如果是文件夹不存在使用,目录树拷贝   打印”找到的文件夹(% s)更新!文件\ n ' %   打印“开始复制。\ n”   shutil。copytree(文件,os.path.join(自我。FolderListNew[0],临时[1]))   打印“复制/璡 n”   其他:   #如果是文件   打印的找到文件(% s)更新!文件\ n ' %   打印“开始复制。\ n”   shutil。拷贝文件(文件,os.path.join(自我。FolderListNew[0],临时[1]))   打印“复制/璡 n”   self.FolderListNew.append (os.path.join(自我。FolderListNew[0],临时[1]))   德尔self.FolderListNew [0]   开始=- 1结束   除了例外,e:   打印:发现异常,e   if __name__==癬_main__”:   #配置如下变量   hostaddr=r ' 10.204.16.28 # ftp地址   用户名=r ' #用户名   密码=r ' #密码   remotedir_old=r ' \ \ 10.204.16.28 \ \旧TDME \测试\ \ TMUMH_1.6.1055回家的   remotedir_new=r ' \ \ 10.204.16.28 \家庭\ TDME \ \新\ TMUMH_1.6.1055测试”   monitorfileupdae=MyUpdateMonitor (hostaddr、用户名、密码、remotedir_old remotedir_new)   monitorfileupdae.FtpLogin ()   而真正的:   打印“开始检查更新…\ n”   monitorfileupdae.LevelOrderFolder ()   打印的检查更新……一小时\ tSleep……”   time . sleep (3600)   打印“你好”

Python FTP两个文件夹间的同步实例代码