아직 python 답게 사용하지 못함...
익숙하지 못함...
코딩양도 적어 쉽게 익숙해지기 어려움...
그래도... 작은 툴이라도 서툴게 만들어 사용할 수 있으니 다행...
| import re
def str2set(cls):
CL = re.compile(r'\w+')
clset = set()
for match in CL.finditer(cls):
cl = match.group()
clset.add(cl)
return clset
def set2str(clset):
clstr = ''
for cl in clset:
clstr += str(cl)
clstr += ','
return clstr[:-1]
def check_cl(cl1, cl2):
'''
cl1 : ,로 구분된 cl list
cl2 : ,로 구분된 cl list
동작 : cl1의 각 cl을 확인하여 cl2에 포함되어 있지 않은 cl을 list up함.
즉 cl1 - cl2
return type : set
'''
CL = re.compile(r'\w+')
cl1set = str2set(cl1)
cl2set = str2set(cl2)
return cl1set - cl2set
def make_cl(eur_cls, add_cls='', sub_cls=''):
'''
return type : set
'''
eurclset = str2set(eur_cls)
addclset = str2set(add_cls)
subclset = str2set(sub_cls)
#
for cl in addclset:
eurclset.add(cl)
result = eurclset - subclset
#
return result
def main():
with open('cl_list.txt', 'rt') as f:
for line in f:
eur_partials = re.findall('^eur_partials\s*=\s*([\d,]*)', line)
if eur_partials != []:
break
for line in f:
kor_partials = re.findall('^kor_partials\s*=\s*([\d,]*)', line)
if kor_partials != []:
break
for line in f:
add_partials = re.findall('^add_partials\s*=\s*([\d,]*)', line)
if add_partials != []:
break
for line in f:
sub_partials = re.findall('^sub_partials\s*=\s*([\d,]*)', line)
if sub_partials != []:
break
eurclset = str2set(eur_partials[0])
korclset = str2set(kor_partials[0])
addclset = str2set(add_partials[0])
subclset = str2set(sub_partials[0])
diff1 = eurclset - korclset - subclset
diff2 = korclset - eurclset - subclset
for cl in addclset:
eurclset.add(cl)
resultlist = list(eurclset - subclset)
resultlist.sort()
print('eur_partials = %s' % eur_partials[0])
print("\n")
print('kor_partials = %s' % kor_partials[0])
print('\n')
print('add_partials = %s' % add_partials[0])
print('\n')
print('sub_partials = %s' % sub_partials[0])
print("------------------------------------------")
print('1. EUR - KOR : ')
print(set2str(diff1))
print('\n')
print('2. KOR - EUR : ')
print(set2str(diff2))
print('\n')
print('3. New CL list : ')
print(str([int(x) for x in resultlist]).replace(', ',',')[1:-1])
if __name__ == '__main__':
main()
|
아래는 위 내용으로 in/out을 복사하려니 그래서
사용하는 text file에 바로 output을 넣도록 바꾸었음.
오탈자가 나서 인식을 못해 add등이 안되도 알 수가 없어서
간단한 오류 검사도 추가함...
import re
from P4 import P4 CLLIST = 'cl_list.txt' ENC = 'utf-8' def p4con(): p4 = P4() p4.user = 'chinst' p4.password = 'ckaRo$9697' p4.port = '165.213.202.46:1716' p4.client = 'KRSW_AND_CHINST_TRELTE_SERIES7' depot = '//PROD_PEACE/STAR_STAR2_CROWN/FLUMEN/...' p4.connect() return p4 def p4discon(p4): p4.disconnect() def str2set(cls): CL = re.compile(r'\w+') clset = set() # for match in CL.finditer(cls): cl = match.group() clset.add(cl) return clset # def set2str(clset): clstr = '' for cl in clset: clstr += str(cl) clstr += ',' return clstr[:-1] # def match_comment(line): temp = re.findall('^\s*#(.*)', line) if temp != []: return True return False # def matchcls(base, matchstr, line): match = False temp = re.findall('^\s*'+matchstr+'\s*=', line) if len(temp) > 0: match = True temp = re.findall('^\s*'+matchstr+'\s*=\s*([\d,\s]*)#{0,1}', line) if temp != []: if base != '': base += ',' base += temp[0].replace(' ','').replace('\n','') return match, base # def getcls(): e = k = a = s = m = orgstr = '' with open(CLLIST, mode='rt', encoding='utf-8') as f: # ln = 0 while(1): line = f.readline() ln += 1 orgstr += line if line == '' or line[:13] == '# end of data': break temp = [] # temp = re.findall('\s*', line) if temp[0] == line: continue temp = re.findall('^base\s*=\s*([\d]+)', line) if temp != []: basecl = temp[0] continue # match = mt = False mt, e = matchcls(e, 'ref_partials', line) match |= mt mt, k = matchcls(k, 'cur_partials', line) match |= mt mt, a = matchcls(a, 'add_partials', line) match |= mt mt, s = matchcls(s, 'sub_partials', line) match |= mt mt, m = matchcls(m, 'must_partials', line) match |= mt match |= match_comment(line) if match == False : print('Error in line #%d' % ln) return orgstr, basecl, e, k, a, s, m # def putcl(orgstr, diff1, diff2, basecl, newcllist, underlist): result_str = '------------------------------------------\n' + \ '1. REF - CUR : (refclset - curclset - subclset)\n' + \ set2str(diff1) + '\n\n' + \ '2. CUR - REF : (curclset - refclset - addclset)\n' + \ set2str(diff2) + '\n\n' + \ '3. New CL list\n\n' + 'Base : ' + str(basecl) + '\nPartial : \n' + \ str([int(x) for x in newcllist]).replace(', ',',')[1:-1] + '\n\n' + \ '***** CLs under the BASE CL *****\n' + \ str([int(x) for x in underlist]).replace(', ',',')[1:-1] + '\n' # with open(CLLIST, mode='wt+', encoding='utf-8') as f: f.write(orgstr) f.write(result_str) # def update(): # orgstr = '' basecl = 0 # orgstr, basecl, eur_partials, kor_partials, add_partials, sub_partials, must_partials = getcls() # eurclset = str2set(eur_partials) korclset = str2set(kor_partials) addclset = str2set(add_partials) subclset = str2set(sub_partials) mustset = str2set(must_partials) # diff1 = eurclset - korclset - subclset diff2 = korclset - eurclset - addclset # korclset = korclset.union(eurclset) korclset = korclset.union(addclset) resultlist = list(korclset - subclset) mustlist = list(mustset) underlist = [ x for x in resultlist if int(x) < int(basecl) ] newcllist = [ x for x in resultlist if int(x) > int(basecl)] underlist.sort() newcllist.sort() mustlist.sort() for cl in mustlist: if cl not in newcllist: newcllist.append(cl) # putcl(orgstr, diff1, diff2, basecl, newcllist, underlist) def main(): update() # if __name__ == '__main__': main() |



















































