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

大龍的博客

常用鏈接

統(tǒng)計(jì)

最新評論

python實(shí)現(xiàn)的ftp自動上傳下載程序(支持目錄遞歸操作)----轉(zhuǎn)

因?yàn)閜ython腳本可以直接用文本工具打開修改,所以沒有設(shè)置參數(shù)。使用的時(shí)候直接修改掉main中的連接下載參數(shù)即可。 
修改一下,可以用來備份網(wǎng)站上的圖片,數(shù)據(jù)庫什么的。 

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不存在,繼續(xù)...' %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 發(fā)生錯誤: %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 = './'          # 遠(yuǎn)程目錄  
  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 成功執(zhí)行了備份\n" %datenow  
  164.     debug_print(logstr)  
  165.       
  166.     file.write(logstr)  
  167.     file.close()  

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


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   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>
            久久看片网站| 国产欧美日韩在线| 国产精品视频免费一区| 国产丝袜美腿一区二区三区| 影视先锋久久| 艳女tv在线观看国产一区| 亚洲欧美国产精品va在线观看| 久久精品视频免费播放| 欧美韩国在线| 国产精品99久久久久久www| 久久久久久一区二区| 欧美三级电影精品| 久久久久久夜| 欧美日韩国产三级| 国产亚洲精久久久久久| 日韩亚洲欧美中文三级| 久久精品人人做人人爽电影蜜月| 亚洲国产欧美精品| 亚洲欧美国产制服动漫| 欧美+亚洲+精品+三区| 国产精品入口日韩视频大尺度| 亚洲国产高清自拍| 香蕉久久一区二区不卡无毒影院| 欧美国产精品va在线观看| 亚洲欧美国产精品桃花| 欧美日本一区| 伊人影院久久| 午夜精品久久一牛影视| 亚洲国产精品999| 欧美一区二区三区免费视| 欧美日韩国产小视频在线观看| 黄色亚洲在线| 午夜精品一区二区三区在线视| 亚洲风情在线资源站| 欧美在线综合视频| 国产精品国产亚洲精品看不卡15 | 亚洲天堂av高清| 蜜臀va亚洲va欧美va天堂| 亚洲午夜精品网| 欧美精品国产一区二区| 激情另类综合| 久久精品在线| 亚洲午夜羞羞片| 欧美日韩一二区| 亚洲精品日本| 欧美激情一区二区三区成人| 久久精品在线观看| 国产欧美日韩一级| 亚洲影院色在线观看免费| 亚洲国产视频直播| 久久尤物电影视频在线观看| 欧美成人国产一区二区| 韩国av一区二区| 欧美一区二区三区在线| 一本到高清视频免费精品| 欧美成人免费网| 亚洲国产一区在线观看| 美女脱光内衣内裤视频久久网站| 欧美在线看片| 国产亚洲人成a一在线v站| 性做久久久久久免费观看欧美| 99国产麻豆精品| 欧美日韩第一区| 99视频一区二区| 亚洲精品免费观看| 欧美大片在线看| 亚洲精品综合| 亚洲精品一二区| 欧美日韩成人综合在线一区二区 | 亚洲高清视频中文字幕| 久久免费一区| 国产精品av免费在线观看| 这里只有精品电影| 亚洲伦理中文字幕| 欧美日韩国产成人在线| 一区二区三区久久| 亚洲九九精品| 欧美日韩在线播放一区| 亚洲欧美日韩视频一区| 亚洲欧美日韩国产成人精品影院| 国产精品日韩专区| 久久精品夜色噜噜亚洲a∨| 性欧美xxxx视频在线观看| 国产在线观看91精品一区| 久久久久中文| 久久这里有精品视频| 亚洲国产清纯| 亚洲日本va午夜在线影院| 欧美三级中文字幕在线观看| 午夜老司机精品| 欧美一区中文字幕| 在线免费观看一区二区三区| 亚洲第一毛片| 欧美日韩免费在线观看| 性亚洲最疯狂xxxx高清| 久久精品首页| 99re66热这里只有精品3直播| 99国产精品国产精品毛片| 国产精品久久久久久久免费软件| 欧美一区二区三区四区夜夜大片| 久久国产欧美日韩精品| 亚洲全部视频| 宅男噜噜噜66国产日韩在线观看| 国产亚洲激情| 亚洲国产精彩中文乱码av在线播放| 欧美日韩亚洲一区二区三区在线观看| 午夜精品影院| 久久综合色综合88| 亚洲一区二区三区精品动漫| 欧美专区一区二区三区| 亚洲精品日韩在线| 亚洲欧美成人精品| 亚洲国语精品自产拍在线观看| 99国产精品99久久久久久粉嫩| 国产一区成人| 亚洲欧洲日本在线| 国产视频精品免费播放| 欧美激情bt| 国产精品视频第一区| 欧美xx视频| 国产精品白丝jk黑袜喷水| 免费在线观看精品| 欧美特黄一级大片| 蜜桃精品一区二区三区| 国产精品国产| 欧美韩日一区二区三区| 国产精品丝袜白浆摸在线| 亚洲福利电影| 国产一区二区0| av成人免费观看| 在线观看日韩www视频免费| 亚洲调教视频在线观看| 亚洲黄色av| 午夜精品久久久久影视 | 农村妇女精品| 欧美一区二区精品久久911| 欧美a级理论片| 久久精品免费播放| 欧美日韩国产三区| 欧美顶级大胆免费视频| 国产嫩草一区二区三区在线观看| 欧美激情一区二区三区| 国产视频一区在线观看一区免费| 亚洲精品美女久久7777777| 在线观看国产精品网站| 午夜精品国产| 亚洲欧美国产视频| 美女999久久久精品视频| 欧美在线一区二区| 欧美日韩在线免费| 欧美国产视频日韩| 国模 一区 二区 三区| 亚洲天堂成人在线视频| 一本色道久久综合亚洲精品不卡| 久久久久久噜噜噜久久久精品| 亚洲欧美一区二区激情| 欧美劲爆第一页| 免费在线日韩av| 国语自产精品视频在线看一大j8 | 国产精品永久| 99人久久精品视频最新地址| 亚洲国产精品日韩| 久久狠狠亚洲综合| 欧美一区国产一区| 国产精品a久久久久久| 亚洲日本电影| 亚洲精选中文字幕| 欧美大片在线看| 亚洲高清不卡在线观看| 亚洲国产合集| 蜜桃久久精品一区二区| 裸体丰满少妇做受久久99精品| 国产欧美一区二区三区在线看蜜臀 | 国产农村妇女毛片精品久久麻豆| 一区二区av在线| 亚洲午夜久久久久久久久电影网| 欧美巨乳在线| 亚洲日本一区二区| 亚洲毛片视频| 欧美精品免费在线| 亚洲精品色图| 中文国产一区| 欧美视频日韩视频| 亚洲天堂av电影| 午夜精品亚洲一区二区三区嫩草| 欧美性感一类影片在线播放| 夜夜嗨av一区二区三区中文字幕| 亚洲午夜免费福利视频| 国产精品国产三级国产aⅴ9色| 一区二区三区视频免费在线观看 | 亚洲综合国产精品| 欧美在线三区| 国产一区二区三区观看| 久久精品水蜜桃av综合天堂| 麻豆精品视频| 亚洲人人精品| 欧美四级剧情无删版影片| 亚洲一区二区三区视频播放| 久久精品色图| 亚洲国产你懂的|