Python下使用ftplib上傳檔案到ftp上

來源:互聯網
上載者:User

標籤:compile   pat   子目錄   path   process   env   多級   open   沒有   

生產情況:tomcat下業務log備份,目錄分多級,然後對應目錄格式放到ftp上;所以,結構上 我就是一級一級目錄進行判斷(因為我沒有找到在ftp一次判斷其子目錄是否存在),還有一個low點就是我沒有找到怎樣一次性的調用ftp的login因為現在每次判斷都需要登入一下,最終功能是實現了;想著先貼出來

#!/usr/local/bin/python3.5###Description: 上傳業務log到FTP199###Author: Tonny.Deng###DateTime: 2016-11-22import os,sys,shutil,time,datetime,re,socket,subprocessimport ftplib##########################backup_dir = "/dockerlogs/"ip_addr = socket.gethostbyname(socket.gethostname())ports = sorted(os.listdir(backup_dir))yesterday = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime("%Y-%m-%d")thirday = (datetime.datetime.now() - datetime.timedelta(days=2)).strftime("%Y-%m-%d")###############取log檔案pattern = re.compile(r‘‘ + thirday + ‘*.log$‘ )#pattern = re.compile(r‘‘ + thirday + ‘*.log‘ )###############取服務連接埠列表目錄for port in (ports):   port_dir = backup_dir + port   ftp_dir = ip_addr + "/" + port##############判斷ftp上是否有對應目錄,沒有則建立,此次判斷是兩個目錄 如:192.168.20.130/8000 這兩個目錄是否存在   ftp = ftplib.FTP("192.xxxxx")   ftp.login("sxxxxxxxxxxxxxx","xxxxxxxxx,10)   try:      ftp.mkd(ip_addr)      ftp.cwd(ip_addr)      try:         ftp.mkd(port)         ftp.quit()      except ftplib.error_perm:         ftp.quit()   except ftplib.error_perm:      ftp.cwd(ip_addr)      try:         ftp.mkd(port)         ftp.quit()      except ftplib.error_perm:         ftp.quit()##############取連接埠目錄下的service目錄   for services in sorted(os.listdir(port_dir)):      services_dir = port_dir + "/" + services##############判斷services目錄是否存在,即第三級 如:192.168.20.130/8000/yunwei      ftp = ftplib.FTP("192.xxxxxx")      ftp.login("syxxxxxx","sxxxxxx",10)      ftp.cwd(ftp_dir)      try:         ftp.mkd(services)      except ftplib.error_perm:         ftp.quit()#############遍曆service目錄中的符合的檔案      for file in sorted(os.listdir(services_dir)):         match = pattern.search(file)         if match:#############匹配到檔案後進行 檔案名稱 更換操作,方便上傳            ftpdir_service = ftp_dir + "/" + services#############登入到ftp上的對應目錄,準備上傳            ftp = ftplib.FTP("19xxxxxxxxxx")            ftp.login("sxxxxx","syxxxxxxx",10)            ftp.cwd(ftpdir_service)            filename = services_dir + "/" + file#############上傳壓縮檔到ftp            os.environ[‘filename‘] = str(filename)            os.system(‘gzip $filename‘)            filename_gz = filename +  ".gz"#############唯讀模式開啟本地需要上傳的檔案            filename_put = open(filename_gz,‘rb‘)            ftp.storbinary(‘STOR %s‘ % os.path.basename(filename_gz),filename_put)            ftp.nlst()

  

Python下使用ftplib上傳檔案到ftp上

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.