간혹 euc-kr로된 파일들을 utf-8로 변경할 경우가 있어 파이썬으로 아래와 같이 iconv를 이용하는 간단한 스크립트를 만들어 사용했습니다.
파이썬 인자관리의 편리한 기능으로 위와 같이 단순한 코드로도 '*.txt'나 '*'와 같은 와일드카드도 자동으로 처리되어 별다른 불편함 없었습니다.
그런데 이번에는 반대로 utf-8을 euc-kr로 변경할 경우가 생겨 스크립트를 변경하면서 옵션을 추가하여 보았습니다. 몇 번 사용해 보았는데 별 문제가 없어 올려 봅니다. (오류나 잘못된 부분이 있으면 알려주시면 감사하겠습니다. ^^;;) 기본 사용법은 아래와 같습니다.
1) 옵션
-f는 파일 단위로 -d는 디렉토리 단위로 변환하며, 두 옵션을 같이 사용할 수 없습니다. 현재 파일의 문자셋은 euc-kr로 변경될 문자셋은 utf-8이 기본으로 설정되어 있습니다. -d 옵션에선 사고(?)를 방지하기 위해 변경될 파일의 확장자가 'txt'가 기본으로 설정되어 있으며, 이는 -e[확장자] 옵션으로 변경할 수 있습니다.
이전 파일은 [파일명].chg로 동일 디렉토리에 저장되며, 이 확장자는 -s[확장자] 옵션으로 변경할 수 있습니다. -x 옵션을 사용하면 이전 파일을 저장하지 않습니다.
2) 사용예
* 현재 디렉토리의 data.txt 파일 변경 (euc-kr -> utf-8)
* 현재 디렉토리의 data.txt 파일 변경 (utf-8 -> euc-kr)
* 현재 디렉토리의 *.txt 파일 변경
* test 디렉토리 내의 모든 txt 파일 확장자를 가진 모든 파일 변경
* 현재 디렉토리 내의 모든 파일과 서브 디렉토리의 파일도 변경
3) 주의사항
파일을 변경하는 위험한(?) 작업인데 테스트와 사용횟수가 부족하기 때문에, 아래의 사항에 유의하시면서 사용하셔야 합니다.
4) 다운로드
아래의 압축파일을 다운로드 받아서 압축을 푸시고 'chmod +x ./chgchar'로 파일의 실행권한을 추가하시고 사용하시면 됩니다.
* 2008.10.21 추가
"nakada님으로 부터 파일 접근권한을 설정하지 않은 문제가 있는 것을 알게되었습니다. 자세한 내용은 nakada님의 포스팅을 참조하시기 바랍니다. nakada님이 작업하신 내용은 이곳에서도 변경해 놓았습니다. nakada님께 감사 드립니다. ^^"
* 아래의 'more..'를 클릭하시면 스크립트의 내용을 확인하실 수 있습니다.
#!/usr/bin/python
import os, sys
for arg in sys.argv[1:]:
if os.path.isfile(arg):
os.rename(arg, arg + '.chg')
command = 'iconv -f euc-kr -t utf-8 ' + arg + '.chg' + ' > ' + arg
os.system(command)
import os, sys
for arg in sys.argv[1:]:
if os.path.isfile(arg):
os.rename(arg, arg + '.chg')
command = 'iconv -f euc-kr -t utf-8 ' + arg + '.chg' + ' > ' + arg
os.system(command)
파이썬 인자관리의 편리한 기능으로 위와 같이 단순한 코드로도 '*.txt'나 '*'와 같은 와일드카드도 자동으로 처리되어 별다른 불편함 없었습니다.
그런데 이번에는 반대로 utf-8을 euc-kr로 변경할 경우가 생겨 스크립트를 변경하면서 옵션을 추가하여 보았습니다. 몇 번 사용해 보았는데 별 문제가 없어 올려 봅니다. (오류나 잘못된 부분이 있으면 알려주시면 감사하겠습니다. ^^;;) 기본 사용법은 아래와 같습니다.
1) 옵션
- -h: 위와 같은 사용법을 출력합니다.
- -r: 서브디렉토리의 파일들도 변환합니다.
- -f: 디렉토리가 아닌 인자로 넘어 온 파일들을 변경합니다.
- -x: 이전 파일의 백업파일을 남기지 않습니다.
- -d: 작업 디렉토리를 지정합니다.
- -s: 이전 파일을 백업할 파일 확장자를 지정합니다.
- -e: 변경할 파일의 확장자를 지정합니다.
- -o: 변경될 파일의 현재 문자셋을 지정합니다.
- -n: 변경될 문자셋을 지정합니다.
-f는 파일 단위로 -d는 디렉토리 단위로 변환하며, 두 옵션을 같이 사용할 수 없습니다. 현재 파일의 문자셋은 euc-kr로 변경될 문자셋은 utf-8이 기본으로 설정되어 있습니다. -d 옵션에선 사고(?)를 방지하기 위해 변경될 파일의 확장자가 'txt'가 기본으로 설정되어 있으며, 이는 -e[확장자] 옵션으로 변경할 수 있습니다.
이전 파일은 [파일명].chg로 동일 디렉토리에 저장되며, 이 확장자는 -s[확장자] 옵션으로 변경할 수 있습니다. -x 옵션을 사용하면 이전 파일을 저장하지 않습니다.
2) 사용예
* 현재 디렉토리의 data.txt 파일 변경 (euc-kr -> utf-8)
$ chgchar -f data.txt
* 현재 디렉토리의 data.txt 파일 변경 (utf-8 -> euc-kr)
$ chgchar -outf-8 -neuc-kr -f data.txt
* 현재 디렉토리의 *.txt 파일 변경
$ chgchar -f *.txt
* test 디렉토리 내의 모든 txt 파일 확장자를 가진 모든 파일 변경
$ chgchar -d./test -etxt
* 현재 디렉토리 내의 모든 파일과 서브 디렉토리의 파일도 변경
$ chgchar -r -e* -d./
3) 주의사항
파일을 변경하는 위험한(?) 작업인데 테스트와 사용횟수가 부족하기 때문에, 아래의 사항에 유의하시면서 사용하셔야 합니다.
- 백업파일을 저장하지 않는 '-x' 옵션 사용하지 않는 것이 좋습니다.
- 와일드카드(*)는 가능한 사용하지 않는 것이 좋습니다.
- 대상 디렉토리와 파일을 확인하고 실행해 주세요.
4) 다운로드
아래의 압축파일을 다운로드 받아서 압축을 푸시고 'chmod +x ./chgchar'로 파일의 실행권한을 추가하시고 사용하시면 됩니다.
* 2008.10.21 추가
"nakada님으로 부터 파일 접근권한을 설정하지 않은 문제가 있는 것을 알게되었습니다. 자세한 내용은 nakada님의 포스팅을 참조하시기 바랍니다. nakada님이 작업하신 내용은 이곳에서도 변경해 놓았습니다. nakada님께 감사 드립니다. ^^"
* 아래의 'more..'를 클릭하시면 스크립트의 내용을 확인하실 수 있습니다.
'기타 > 자잘한 Tip' 카테고리의 다른 글
sqlite3에서 csv import/export (0) | 2009.08.26 |
---|---|
Python에서 sqlite3 사용하기 (1) | 2009.08.26 |
Xcode에서의 Ruby on Rails (8) | 2008.08.20 |
Dashcode로 올블로그 RSS 위젯 만들기 (2) | 2008.05.22 |
자주 사용하는 MySQL 명령어 (4) | 2008.02.28 |