파이썬으로 SCSS 파일내 px, rem 수치 일괄 절반으로 변경하기

뷰포트 이슈로 SCSS 파일내의 수치를 절반으로 일괄 변경해야되는 이슈가 있어 급하게 만들었던 코드.
비율 단위인 vw, %는 해당사항이 없고 우리팀 같은 경우는 px 아니면 rem만 대상이 되어 해당 단위 앞 수치만 절반으로 바꾸도록 처리했다.

프레임워크 내 스타일 루트에서 실행하면 하위 폴더 포험 SCSS 파일 변환.

import os
import re

extName = '.scss'
convertFiles = 0

def convertDivide(matchObj):
    isRem = re.search('px', matchObj.group()) == None
    unit = 'rem' if isRem else 'px'

    number = float(matchObj.group().split(unit)[0]) / 2
    number2 = str(number).split('.')

    if int(number2[0]) == 0:
        number = '.' + number2[1]
    elif int(number2[1]) == 0:
        number = number2[0]
    else:
        number = str(number)

    number = number + unit
    return number

def readAndWrite(filename):
    f = open(filename, 'r')
    data = f.read()
    pattern = r'(\.?\d)+(rem|px)'
    c = re.sub(pattern=pattern, repl=convertDivide, string=data)
    f.close()
    k = open(filename + '.convert', 'w')
    k.write(c)
    k.close()

for (path, dir, files) in os.walk('./'):
    for filename in files:
        ext = os.path.splitext(filename)[-1]
        if ext == extName:
            readAndWrite(path + '/' + filename)
            convertFiles += 1

print('{} Files Completed'.format(convertFiles))

도움이 된 URL