青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

大龍的博客

常用鏈接

統計

最新評論

python實現的ftp自動上傳下載程序(支持目錄遞歸操作)----轉

因為python腳本可以直接用文本工具打開修改,所以沒有設置參數。使用的時候直接修改掉main中的連接下載參數即可。 
修改一下,可以用來備份網站上的圖片,數據庫什么的。 

Python代碼  收藏代碼
  1. #!/usr/bin/python  
  2. #coding=gbk  
  3. ''''' 
  4.     ftp自動下載、自動上傳腳本,可以遞歸目錄操作 
  5. '''  
  6.   
  7. from ftplib import FTP  
  8. import os,sys,string,datetime,time  
  9. import socket  
  10.   
  11. class MYFTP:  
  12.     def __init__(self, hostaddr, username, password, remotedir, port=21):  
  13.         self.hostaddr = hostaddr  
  14.         self.username = username  
  15.         self.password = password  
  16.         self.remotedir  = remotedir  
  17.         self.port     = port  
  18.         self.ftp      = FTP()  
  19.         self.file_list = []  
  20.         # self.ftp.set_debuglevel(2)  
  21.     def __del__(self):  
  22.         self.ftp.close()  
  23.         # self.ftp.set_debuglevel(0)  
  24.     def login(self):  
  25.         ftp = self.ftp  
  26.         try:   
  27.             timeout = 60  
  28.             socket.setdefaulttimeout(timeout)  
  29.             ftp.set_pasv(True)  
  30.             print '開始連接到 %s' %(self.hostaddr)  
  31.             ftp.connect(self.hostaddr, self.port)  
  32.             print '成功連接到 %s' %(self.hostaddr)  
  33.             print '開始登錄到 %s' %(self.hostaddr)  
  34.             ftp.login(self.username, self.password)  
  35.             print '成功登錄到 %s' %(self.hostaddr)  
  36.             debug_print(ftp.getwelcome())  
  37.         except Exception:  
  38.             deal_error("連接或登錄失敗")  
  39.         try:  
  40.             ftp.cwd(self.remotedir)  
  41.         except(Exception):  
  42.             deal_error('切換目錄失敗')  
  43.   
  44.     def is_same_size(self, localfile, remotefile):  
  45.         try:  
  46.             remotefile_size = self.ftp.size(remotefile)  
  47.         except:  
  48.             remotefile_size = -1  
  49.         try:  
  50.             localfile_size = os.path.getsize(localfile)  
  51.         except:  
  52.             localfile_size = -1  
  53.         debug_print('lo:%d  re:%d' %(localfile_size, remotefile_size),)  
  54.         if remotefile_size == localfile_size:  
  55.             return 1  
  56.         else:  
  57.             return 0  
  58.     def download_file(self, localfile, remotefile):  
  59.         if self.is_same_size(localfile, remotefile):  
  60.             debug_print('%s 文件大小相同,無需下載' %localfile)  
  61.             return  
  62.         else:  
  63.             debug_print('>>>>>>>>>>>>下載文件 %s ... ...' %localfile)  
  64.         #return  
  65.         file_handler = open(localfile, 'wb')  
  66.         self.ftp.retrbinary('RETR %s'%(remotefile), file_handler.write)  
  67.         file_handler.close()  
  68.   
  69.     def download_files(self, localdir='./', remotedir='./'):  
  70.         try:  
  71.             self.ftp.cwd(remotedir)  
  72.         except:  
  73.             debug_print('目錄%s不存在,繼續...' %remotedir)  
  74.             return  
  75.         if not os.path.isdir(localdir):  
  76.             os.makedirs(localdir)  
  77.         debug_print('切換至目錄 %s' %self.ftp.pwd())  
  78.         self.file_list = []  
  79.         self.ftp.dir(self.get_file_list)  
  80.         remotenames = self.file_list  
  81.         #print(remotenames)  
  82.         #return  
  83.         for item in remotenames:  
  84.             filetype = item[0]  
  85.             filename = item[1]  
  86.             local = os.path.join(localdir, filename)  
  87.             if filetype == 'd':  
  88.                 self.download_files(local, filename)  
  89.             elif filetype == '-':  
  90.                 self.download_file(local, filename)  
  91.         self.ftp.cwd('..')  
  92.         debug_print('返回上層目錄 %s' %self.ftp.pwd())  
  93.     def upload_file(self, localfile, remotefile):  
  94.         if not os.path.isfile(localfile):  
  95.             return  
  96.         if self.is_same_size(localfile, remotefile):  
  97.             debug_print('跳過[相等]: %s' %localfile)  
  98.             return  
  99.         file_handler = open(localfile, 'rb')  
  100.         self.ftp.storbinary('STOR %s' %remotefile, file_handler)  
  101.         file_handler.close()  
  102.         debug_print('已傳送: %s' %localfile)  
  103.     def upload_files(self, localdir='./', remotedir = './'):  
  104.         if not os.path.isdir(localdir):  
  105.             return  
  106.         localnames = os.listdir(localdir)  
  107.         self.ftp.cwd(remotedir)  
  108.         for item in localnames:  
  109.             src = os.path.join(localdir, item)  
  110.             if os.path.isdir(src):  
  111.                 try:  
  112.                     self.ftp.mkd(item)  
  113.                 except:  
  114.                     debug_print('目錄已存在 %s' %item)  
  115.                 self.upload_files(src, item)  
  116.             else:  
  117.                 self.upload_file(src, item)  
  118.         self.ftp.cwd('..')  
  119.   
  120.     def get_file_list(self, line):  
  121.         ret_arr = []  
  122.         file_arr = self.get_filename(line)  
  123.         if file_arr[1not in ['.''..']:  
  124.             self.file_list.append(file_arr)  
  125.               
  126.     def get_filename(self, line):  
  127.         pos = line.rfind(':')  
  128.         while(line[pos] != ' '):  
  129.             pos += 1  
  130.         while(line[pos] == ' '):  
  131.             pos += 1  
  132.         file_arr = [line[0], line[pos:]]  
  133.         return file_arr  
  134. def debug_print(s):  
  135.     print (s)  
  136. def deal_error(e):  
  137.     timenow  = time.localtime()  
  138.     datenow  = time.strftime('%Y-%m-%d', timenow)  
  139.     logstr = '%s 發生錯誤: %s' %(datenow, e)  
  140.     debug_print(logstr)  
  141.     file.write(logstr)  
  142.     sys.exit()  
  143.   
  144. if __name__ == '__main__':  
  145.     file = open("log.txt""a")  
  146.     timenow  = time.localtime()  
  147.     datenow  = time.strftime('%Y-%m-%d', timenow)  
  148.     logstr = datenow  
  149.     # 配置如下變量  
  150.     hostaddr = 'localhost' # ftp地址  
  151.     username = 'test' # 用戶名  
  152.     password = 'test' # 密碼  
  153.     port  =  21   # 端口號   
  154.     rootdir_local  = '.' + os.sep + 'bak/' # 本地目錄  
  155.     rootdir_remote = './'          # 遠程目錄  
  156.       
  157.     f = MYFTP(hostaddr, username, password, rootdir_remote, port)  
  158.     f.login()  
  159.     f.download_files(rootdir_local, rootdir_remote)  
  160.       
  161.     timenow  = time.localtime()  
  162.     datenow  = time.strftime('%Y-%m-%d', timenow)  
  163.     logstr += " - %s 成功執行了備份\n" %datenow  
  164.     debug_print(logstr)  
  165.       
  166.     file.write(logstr)  
  167.     file.close()  

posted on 2011-12-14 11:15 大龍 閱讀(2754) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美亚洲| 亚洲麻豆视频| 性色一区二区| 国产精品影片在线观看| 亚洲一区二区在线观看视频| 亚洲精品一二三| 欧美激情一区二区| 亚洲美女在线一区| 亚洲激情二区| 欧美电影在线观看完整版| 91久久夜色精品国产九色| 久久综合九色综合欧美就去吻| 亚洲免费影视第一页| 国产精品视频网址| 久久久久久电影| 久久久精品动漫| 亚洲人被黑人高潮完整版| 亚洲老司机av| 国产精品一区二区你懂的| 久久久久在线| 欧美激情一区| 久久爱另类一区二区小说| 久久资源在线| 亚洲综合三区| 麻豆freexxxx性91精品| 亚洲一区二区欧美| 久久精品亚洲一区二区三区浴池| 亚洲激情成人网| 亚洲一卡二卡三卡四卡五卡| 精品福利av| 亚洲日本va午夜在线电影| 国产精品视频1区| 欧美激情91| 国产精品日本欧美一区二区三区| 免费成人高清在线视频| 欧美视频在线观看一区| 美国三级日本三级久久99| 欧美日韩xxxxx| 久久综合五月| 欧美性大战久久久久| 男女视频一区二区| 国产九色精品成人porny| 91久久国产综合久久蜜月精品 | 亚洲欧美一区二区三区极速播放 | 欧美区高清在线| 亚洲自拍电影| 欧美激情小视频| 牛夜精品久久久久久久99黑人| 欧美无砖砖区免费| 亚洲高清激情| 在线播放日韩专区| 欧美一区二区三区的| 亚洲小说欧美另类社区| 噜噜噜在线观看免费视频日韩| 欧美在线亚洲在线| 国产精品麻豆成人av电影艾秋| 91久久夜色精品国产九色| 136国产福利精品导航| 亚洲视频在线观看三级| 99pao成人国产永久免费视频| 久久狠狠婷婷| 久久视频国产精品免费视频在线 | 欧美一级二区| 亚洲男人第一网站| 国产精品v日韩精品v欧美精品网站 | 欧美精选一区| 欧美国产日韩亚洲一区| 在线观看91精品国产麻豆| 欧美在线看片| 久久久噜噜噜久久| 激情校园亚洲| 老司机午夜免费精品视频| 蜜臀a∨国产成人精品| 一区二区三区在线看| 久久精品夜色噜噜亚洲a∨| 久久久蜜桃一区二区人| 国产一区二区三区四区五区美女| 亚洲免费一区二区| 久久久久久黄| 在线观看日韩av电影| 另类亚洲自拍| 亚洲人成精品久久久久| 9国产精品视频| 国产精品高潮呻吟久久av无限 | 久久精彩免费视频| 国产在线精品成人一区二区三区| 欧美诱惑福利视频| 欧美成人69av| 夜夜夜久久久| 国产欧美一区二区视频| 久久久精品动漫| 亚洲国产一区视频| 亚洲婷婷在线| 狠狠色综合网站久久久久久久| 久热这里只精品99re8久| 91久久久久久久久| 午夜精品一区二区在线观看| 国产一区二区三区高清播放| 久久免费国产精品1| 亚洲三级免费电影| 欧美一级免费视频| 亚洲国产导航| 国产精品久久久久久户外露出| 欧美在线观看你懂的| 亚洲电影免费观看高清完整版| 亚洲图片欧美一区| 国产一区再线| 欧美日一区二区在线观看 | 欧美激情在线狂野欧美精品| 一本一本久久| 国精品一区二区| 欧美日本中文| 久久另类ts人妖一区二区| 亚洲精品在线免费| 久热re这里精品视频在线6| 日韩西西人体444www| 国产日韩在线一区| 欧美人交a欧美精品| 欧美在线精品免播放器视频| 日韩写真在线| 免费观看一级特黄欧美大片| 亚洲欧美日韩在线不卡| 亚洲国产欧美久久| 国产视频久久| 国产精品成人在线观看| 欧美mv日韩mv国产网站| 欧美在线观看视频一区二区| 亚洲天天影视| 日韩午夜av电影| 欧美r片在线| 久久久av水蜜桃| 欧美一级片在线播放| 在线视频欧美日韩精品| 亚洲黄色小视频| 伊人久久婷婷色综合98网| 国产九区一区在线| 国产精品久久久久久户外露出 | 亚洲欧美激情精品一区二区| 亚洲精品中文字幕有码专区| 欧美国产在线观看| 米奇777在线欧美播放| 久久爱www久久做| 欧美在线影院| 小嫩嫩精品导航| 亚洲一二三区精品| 亚洲调教视频在线观看| 亚洲天堂偷拍| 亚洲已满18点击进入久久| 一区二区三区四区在线| 一区二区三区高清在线观看| 在线视频欧美精品| 中文成人激情娱乐网| 一区二区毛片| 夜夜嗨av一区二区三区中文字幕| 在线日韩av片| 亚洲人成在线观看一区二区| 亚洲毛片在线免费观看| 亚洲精品之草原avav久久| 在线高清一区| 亚洲精品视频在线看| 一本色道久久88综合亚洲精品ⅰ | 国产精品主播| 国产亚洲精品bv在线观看| 国产女主播在线一区二区| 国产亚洲精品v| 亚洲第一区在线| 99精品国产在热久久婷婷| 中文日韩在线视频| 校园激情久久| 久久亚洲一区| 91久久久在线| 亚洲一级黄色av| 久久精品视频导航| 欧美激情亚洲综合一区| 国产精品高清在线观看| 国产欧美一区二区三区沐欲 | 欧美日韩一区二区国产| 国产精品免费小视频| 一区国产精品| 一本久久a久久免费精品不卡| 亚洲欧美三级伦理| 老鸭窝毛片一区二区三区| 亚洲欧洲日产国码二区| 亚洲一区二区三区四区在线观看| 欧美专区日韩视频| 欧美人妖在线观看| 黑人一区二区三区四区五区| 夜夜嗨av一区二区三区网页| 久久国产精品久久久久久久久久 | 午夜在线a亚洲v天堂网2018| 久久青草久久| 在线视频中文亚洲| 狂野欧美激情性xxxx欧美| 欧美色大人视频| 亚洲激情图片小说视频| 欧美一区二区观看视频| 亚洲精品乱码| 久久久久综合| 国产视频久久久久| 一区二区电影免费观看|