Knowledge Map

특정 디렉토리 안에 있는 모든 htm, html, php 파일 인코딩 변환 본문

PYTHON

특정 디렉토리 안에 있는 모든 htm, html, php 파일 인코딩 변환

2016. 6. 28. 10:24

오래된 웹사이트 의 htm, html, php의 인코딩은 전부다 EUC-KR인 경우가 많다.

최근 이것을 새롭게 고치는 작업중에 있는데 인코딩 때문에 애를 먹고 있다.


어찌저찌하여 EUC-KR인 것들을 전부 UTF-8로 바꾸었지만 

홈페이지와 연계되어 있는 솔루션이 EUC-KR 이고 서버도 그렇기 때문에 일정을 맞추기 위해서는 어쩔수 없이 EUC-KR로 다시 바꿔야 할수도 있다고 하신다.............................


수동으로 메모장이나 서브라임, Edit Plus 등을 이용해서 인코딩을 변환했는데 아무리 생각해도 이걸 다시 반복하는건 좀 아닌거 같아서 잘 사용하고 있는 파이썬을 가지고 자동화를 시켜보기로 했다.


출처 :

 http://seorenn.blogspot.kr/2012/12/python_23.html

http://flowerykeyboard.tistory.com/6

http://handk85.tistory.com/163


※ 맨마지막 꺼만 봐도 다 나와있다.


다만 참조했던 페이지에서는 한줄씩 변환하는 것이라서 속도가 느렸고 파일 삭제와 관련해서 내컴에서는 제대로 안되었기 때문에 약간 손을 봤다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# -*-coding: utf-8 -*-
import os
import glob
 
# 인코딩 변환
def change_encoding ( file_name ):
    file = open(file_name, 'r')
    file_name = unicode(file_name, 'cp949', errors='ignore').decode('utf-8','ignore')
 
    lines = []
 
    data = file.read()
    data = data.decode('cp949','ignore').encode('utf-8','ignore')
    file.close()
    changedFile = open(file_name, 'w')
    changedFile.writelines(data)
    print file_name+" - CP949 -> UTF-8"
 
# 특정 디렉퇴 안의 모든 파일 읽어내기
def start():
    cnt = 0;
    for path, dirs, files in os.walk('c:\\admin\\'):
        # files = glob.glob('c:\\admin\\*')
        glob.glob('*.html')
        for fname in files:
            files_type =fname.split('.')[1].lower()
            if len(fname.split('.'))==2 and (files_type == 'html' or files_type == 'htm' or files_type == 'php'):
                # print path+'\\'+fname;
                fullpath = os.path.join(path, fname)
                print fullpath
                change_encoding(fullpath)
                cnt +=1
    print cnt;
 
start()
 
 
cs


readline으로 읽지 않고 read로 전체를 다 읽어낸 다음에 다 바꾸는 형식으로 했다.

다만 위의 코드는 삭제 기능도 같이 포함해서 만들었기 때문에 사용하기 전에 


반드시 백업을 해놔야 한다.


그리고 일단 시험삼아 만들어 본거라서 한줄씩 읽어서 변형하는게 아니라 전체로 읽어서 변형하는데 실제로 웹서버에서 제대로 작동하는지는 아직 테스트를 안해봤다 ㅋ


참고로 보면 좋을듯 하다.

'PYTHON' 카테고리의 다른 글

sqlAlchemy 관련  (0) 2016.08.11
css 정렬 코드  (0) 2016.07.03
쓰레드, 멀티 프로세싱  (0) 2016.05.26
DataStructure in Python[Insert Sort]  (0) 2016.05.15
파이썬 - 트위터 연계 1  (0) 2016.05.13
Comments