common utils

'''
Created on Feb 7, 2013

@author: changxue

@summary: personal utils
'''
import os, time, shutil

#current_time = time.strftime('%Y-%m-%d_%H%M', time.localtime(time.time()))
current_time = time.strftime('%Y-%m-%d', time.localtime(time.time()))
logfile = os.path.join('C:\\works\\workload_out\\out', 'workload_%s.log'%current_time)

def _printlog(msg):
    with open(logfile, 'a') as f:
        f.write('%s\n'%msg)
        print msg

def _get_dirname_from_filename(filename):
    ''' cut out the extension of filename as dir-name, raise Exception if invalid.'''
    if os.path.dirname(filename):
        filename = os.path.basename(filename)
    index = filename.rfind('.')
    if index != -1:
        return filename[:index]
    else:
        raise Exception('%s is not a file or without extension\n'%filename)

def _create_dirs(dir_name):
    ''' if directory of dir_name not exist, create;
        else do nothing.''' 
    if not os.path.exists(dir_name):
        os.makedirs(dir_name)

def _execute_cmd(command):
    ''' execute outer command. Raise Exception when error.'''
    if os.system(command) != 0:
        raise Exception( "ERROR ON executing command: %s\n" % command )
    else:
        _printlog( "SUCCESS: %s" % command )

def _exclude(path):
    ''' a directory named old placed cases which has already processed, generated by method of clean.'''
    operate_list = os.listdir(path)
    if 'old' in operate_list:
        operate_list.remove('old')    
    return operate_list

def _move_to_old_dir(path):
    ''' for cleaning up.'''
    if os.path.exists(path):
        old_dir = os.path.join(path, 'old')
        new_dir = os.path.join(old_dir, current_time)
        _create_dirs(new_dir)
        operate_list = _exclude(path)
        for dirname in operate_list:
            try:
                shutil.move(os.path.join(path, dirname), os.path.join(new_dir, dirname))
                _printlog('SUCCESS: move %s into old dir\n'%os.path.join(path, dirname))
            except:
                _printlog('FAIL at moving: %s'%os.path.join(path, dirname))
                continue

def _remove_empty_dirs(path):
    from nt import rmdir
    for d in os.listdir(path):
        if os.path.isdir(d):
            try:
                rmdir(d)
                _printlog('SUCCESS: remove empty directory: %s\n'%os.path.join(path, d))
            except:
                continue

def _add_files_to_list (path, pattern='.*\.class$'):
    ''' walk through [path], find the specified [pattern] files and add them into [result_list]. '''
    import re
    result_list = []
    for root, dirs, files in os.walk (path):
        for name in files:
            full_name = os.path.join (root, name)
            if (re.match (pattern, full_name)):
                result_list.append (full_name)
    return result_list

 

posted @ 2013-02-22 17:05  道以万计  阅读(675)  评论(0编辑  收藏  举报