2014-11-06 59 views
0

我有以下腳本 -蟒蛇 - 歸檔文件沒有完整路徑

import os 
import stat 
import zipfile 
from datetime import datetime, timedelta 
import logging 

logfile = 'D:\\logfiles\\MasterLogsArchive\\archive.log' 
logging.basicConfig(filename=logfile, format='%(asctime)s %(message)s', level=logging.DEBUG) 

try: 
    import zlib 
    compression = zipfile.ZIP_DEFLATED 
except: 
    compression = zipfile.ZIP_STORED 

modes = { zipfile.ZIP_DEFLATED: 'deflated', 
      zipfile.ZIP_STORED: 'stored', 
      } 

def modified_date(filename): 
    return datetime.fromtimestamp(os.stat(filename)[stat.ST_MTIME]) 

def find_between(s, first, last): 
    try: 
     start = s.index(first) + len(first) 
     end = s.index(last, start) 
     return s[start:end] 
    except ValueError: 
     return "" 

move_date = datetime.now() - timedelta(minutes = 2) 
src = "D:\\program files (x86)\\TIDAL\\Scheduler\\Master\\log" 


for filename in os.listdir(src): 
    full_filename = os.path.join(src, filename) 
    scheduler = os.path.join(src, 'scheduler.out') 

    if modified_date(full_filename) < move_date and filename.startswith('Master'): 
     filedate = find_between(filename, '-', '.')[:-7] 
     date = filedate[:-2] 
     year = filedate[:-6] 
     month = filedate[4:-4] 
     day = filedate[6:-2] 
     hour = filedate[8:] 
     dest = "D:\\logfiles\\MasterLogsArchive\\" + date 
     if not os.path.exists(dest): 
      os.makedirs(dest) 
     zf = dest + '\\' + 'Master%s%s%s-%s.zip' % (year, month, day, hour) 

     ## add Master Logs 
     if (os.path.isfile(full_filename)): 
      if (os.path.isfile(zf)): 
       try: 
        logging.info('%s is archived' % full_filename) 
        zip = zipfile.ZipFile(zf, mode='a') 
        zip.write(full_filename, compress_type=compression) 
        os.remove(full_filename) 
       finally: 
        zip.close() 
      else: 
       try: 
        logging.info('%s is archived' % full_filename) 
        zip = zipfile.ZipFile(dest + '\\' + 'Master%s%s%s-%s.zip' % (year, month, day, hour), mode='w') 
        zip.write(full_filename, compress_type=compression) 
        os.remove(full_filename) 
       finally: 
        zip.close() 

我遇到的問題是,在壓縮它在做什麼,我不想要的完整路徑。我只想要zip中的文件。如果我將zip.write更改爲'filename'而不是'full_filename',它會抱怨它找不到該文件。

那麼如何獲得寫入信息以知道從哪個文件夾中獲取文件?

回答