공공기관2 작업 중. _temp 몽타주(재생성가능)는 제외. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
53 lines
2.3 KiB
Python
53 lines
2.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""미검수 27곳 C열(사이트명)을 "광역 기관"(공백구분)으로 채움. 검수완료 제외.
|
|
사용: python -X utf8 _fill_C_province.py [--write]
|
|
"""
|
|
import sys, os, re, shutil, importlib.util
|
|
import openpyxl
|
|
|
|
HERE=os.path.dirname(os.path.abspath(__file__))
|
|
MODULES=['_chungnam_phase234_all.py','_chungbuk_phase234_all.py','_jeonbuk_phase234_all.py']
|
|
TARGETS={'서산시','아산시','천안시','청양군','홍성군',
|
|
'괴산군','단양군','보은군','영동군','옥천군','음성군','제천시','증평군','진천군','청주시','충주시',
|
|
'부안군','순창군','완주군','익산시','임실군','장수군','전주시','정읍시','진안군','서귀포시','제주시'}
|
|
|
|
def load():
|
|
sites={}
|
|
for f in MODULES:
|
|
sp=importlib.util.spec_from_file_location(f[:-3],os.path.join(HERE,f));m=importlib.util.module_from_spec(sp);sp.loader.exec_module(m)
|
|
sites.update(m.SITES)
|
|
return sites
|
|
|
|
def province_of(path):
|
|
m=re.search(r'광역_사이트맵[\\/]([^\\/]+)[\\/]',path)
|
|
return m.group(1) if m else '?'
|
|
|
|
def main():
|
|
write='--write' in sys.argv
|
|
sites=load(); locked=[]; done=[]
|
|
for org in sorted(TARGETS):
|
|
if org not in sites: print(org,'SITES없음'); continue
|
|
xlsx=sites[org]['xlsx']
|
|
prov=province_of(xlsx); newC=f'{prov} {org}'
|
|
wb=openpyxl.load_workbook(xlsx); ws=wb.active
|
|
ch=0
|
|
for r in range(3,ws.max_row+1):
|
|
content = any(ws.cell(r,c).value not in (None,'') for c in (2,4,5,6,7,8,9,10,11,12))
|
|
cur=ws.cell(r,3).value
|
|
if (cur not in (None,'')) or content:
|
|
if cur!=newC:
|
|
if write: ws.cell(r,3).value=newC
|
|
ch+=1
|
|
if write and ch:
|
|
try:
|
|
bak=xlsx.replace('.xlsx','_backup_C광역전.xlsx')
|
|
if not os.path.exists(bak): shutil.copy(xlsx,bak)
|
|
wb.save(xlsx)
|
|
except PermissionError:
|
|
locked.append(org); print(f'{org:6} ❌파일열림 (미적용)'); continue
|
|
done.append((org,newC,ch))
|
|
print(f'{org:6} → "{newC}" 변경 {ch}행 {"[적용]" if write else "[DRY]"}')
|
|
if locked: print('\n⚠️ 파일열림으로 미적용:',', '.join(locked))
|
|
|
|
if __name__=='__main__': main()
|