Source code for common.utils.common_util

import psycopg2
import os
import shutil, errno
import logging
import math
from common.utils import *
import datetime
import operator
import logging

gLogFloag = "Y"
gUserId = "-1"
# gUrl = "{0}:{1}".format(os.environ['HOSTNAME'], "8000")
gConpg = "dbname='tensormsa' user='tfmsauser' host='localhost' password='1234'"


[docs]def println(printStr): if gLogFloag == "Y": conn = psycopg2.connect(gConpg) cur = conn.cursor() if printStr == "S" or printStr == "s": sql = "delete from common_log_info where created_by = '" + gUserId + "'" cur.execute(sql) conn.commit() elif printStr == "E" or printStr == "e": sql = "select * from common_log_info where created_by = '" + gUserId + "' order by log_id" cur.execute(sql) rows = cur.fetchall() logging.debug("Trace.............................................................................") for i in range(0, len(rows)): for j in range(0, len(rows[i])): if rows[i][j] is not None and cur.description[j][0] not in ( "id", "log_id", "creation_date", "last_update_date", "created_by", "last_updated_by"): print(rows[i][j]) logging.debug("..................................................................................") else: logging.debug(printStr) cur.execute( "select COALESCE(max(log_id)::int,0)+10 seq from common_log_info where created_by = '" + gUserId + "'") rows = cur.fetchall() sql = "INSERT INTO common_log_info( " valueStr = "" # 일반적인 String 형태일 경우 출력을 해준다. try: valS = printStr.split("+") cnt = 1 for i in valS: if cnt != 1 and cnt < 31: sql += "," valueStr += "," if cnt < 31: sql += str("attr") + str(cnt) valueStr += "'" + str(i) + "'" cnt += 1 sql += ",creation_date,last_update_date, created_by, last_updated_by,log_id) " sql += "VALUES (" + valueStr + ",now(),now(),'" + gUserId + "','" + gUserId + "','" + str( rows[0][0]) + "')" cur.execute(sql) conn.commit() except Exception as e: # 객체 형태일 경우 출력을 해준다. sql += "attr1,creation_date,last_update_date, created_by, last_updated_by,log_id) " sql += "VALUES ('" + str(printStr).replace("'", "") + "',now(),now(),'" + gUserId + "','" + gUserId + "','" + str( rows[0][0]) + "')" cur.execute(sql) conn.commit() # 연결을 종료한다 cur.close() conn.close() log_savefile(printStr)
[docs]def log_savefile(printStr): # file Save logame = 'log' log_path = '/hoya_log' filesavecnt = 3 filesizeMax = 100000 try: if not os.path.exists(log_path): os.makedirs(log_path) filelist = os.listdir(log_path) now_time = str(datetime.datetime.now()) fullname = log_path + '/' + logame + '_' + now_time fullname = fullname.replace(" ", ".") filelist.sort(reverse=True) i = 1 for filename in filelist: step1 = filename.split("_") # file create if i == 1: fullname = log_path + '/' + filename fullname = fullname.replace(" ", ".") filesize = os.path.getsize(fullname) if filesize > filesizeMax: fullname = log_path + '/' + step1[0] + '_' + now_time fullname = fullname.replace(" ", ".") if i > filesavecnt: os.remove(log_path + '/' + filename) i += 1 with open(fullname, "a") as myfile: myfile.write(str(printStr)+ '\n') except: None
[docs]def get_combine_label_list(origin_list, compare_list): """ 리스트 두개를 비교하여 차이나는 값만 마지막에 순서대로 넣는 함수 The function that compare two list and insert distingush values Args: params: * origin_list : A original list * compare_list: An compare lists Returns: list 두 리스트를 비교하여 구별된 값을 새 원래 리스트에 추가하여 반환 Raises: Example origin_list = ['A','B','C','D'] compare_list = ['50>=', '50=','C','D','E'] result => ['A', 'B', 'C', 'D', '50=', '50>=', 'E'] """ try: _origin_list = list(origin_list) _compare_list = list(compare_list) _union_values = set(_origin_list).union(set(_compare_list)) _diff_values = sorted(list(_union_values - set(_origin_list))) _origin_list.extend(_diff_values) except Exception as e: logging.error("get_combine_label_list {0}".format(e)) return _origin_list
[docs]def copy_all(src, dst): """ 디렉토리 안에 파일을 전부 복사 하는 유틸 The util that anything(file, directories...) in directory to destination dirctory Args: params: * src : source directory * dst: distination directory Returns: None Raises: Example src = /hoya_model_root/nn00001/1/netconf_node/nn00001_1_19 dst =/hoya_model_root/nn00001/1/netconf_node/nn00001_1_20 """ try: shutil.copytree(src, dst) logging.info("copytree source({0}) to dest ({1})".format(src, dst)) except OSError as exc: # python >2.5 if exc.errno == errno.ENOTDIR: shutil.copy(src, dst) logging.info("copy source({0}) to dest ({1})".format(src, dst)) else: logging.error("copy error source({0}) to dest ({1})".format(src, dst))
#raise exc
[docs]def isnan(value): """ Pandas에서 Nan 검사하는 유틸 The function is Nan Check in pandas Args: params: * value : anything Returns: True / False Raises: Example isnan('hello') == False isnan('NaN') == True isnan(100) == False isnan(float('nan')) = True """ try: return math.isnan(float(value)) except: return False
[docs]def make_and_exist_directory(directory): """ 디렉토리 만들기(없으면 만들고 있으면 현재 디렉토리 값 반환) Make Directory and Exist Directory Args: params: * directory : directory path Returns: directory path Raises: Example """ try: if not os.path.exists(directory): os.makedirs(directory) return directory except Exception as e: logging.error("Make Celery Logging Directory {0} : {1}".format(directory, e)) raise Exception(e) return False