파이썬으로 SCSS 파일내 px, rem 수치 일괄 절반으로 변경하기
- created
- category
- worklog
뷰포트 이슈로 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))