2012년 4월 17일 화요일

IndentationError: unexpected indent 에러 관련

IndentationError: unexpected indent 


위 에러 때문에 아무것도 아닌것에 아주 골 머리를 썩힌 적이 있습니다.

저는 notepad++ 에서 python 스크립팅을 합니다.

테스트야 뭐 그냥 ctrl+c , ctrl+v  신공으로 nuke 의 script editor 창에서 직접 하지요.

위의 에러는 여기서 생기는 문제 입니다.

구글링을 해보면 뭐 영어가 워낙에 짧아 내용 찾는게 힘들었는데.. 들여쓰기가 문제 더군요.

mel script 나 max script 는 구문을 나눌때 괄호로 나누기 때문에

단지 가독성이 좋아 지라고 탭으로 들여쓰기를 합니다.

하지만 python 은 구문을 나눌때 들여쓰기로 나누더군요.

예로
for t in test:
    print t

는 notepad++에서는 print t 라인을 쓰기 위해 탭 을 사용하여 들여쓰기를 합니다.

외관상으로는 문제가 없지만 있는 그대로 .py 파일로 저장을 하고 실행을 할때는

들여쓰기에 문제가 있다고 판단을 해서 위의 에러 메세지를 표시 하는것 이지요.


그래서 notepad++ 에서 들여쓰기 하면서 사용한 이 문제가 된 것 이었습니다.

즉 파일로 저장해서 실행을 하면 구문 오류가 나는것이죠.


여기서 쉽게 수정하는 방법을 찾게 됩니다.

복사 신공으로 실행 하면 에러가 나지 않지만 파일로 저장을 하면 에러가 난다..

즉 복사 해서 nuke의 script editor 창에 붙여 넣는 순간 탭은 모두 4칸의 공백
(notepad++에서의 탭은 4칸 공백과 크기가 같아서..)으로 바뀝니다.

script editor 창에 복사해두고 다시 복사 해서 notepad++ 에 붙여 넣으면 들여쓰기가 탭이

아닌 4칸의 스페이스로 인식되는 것이고 구문상에도 문제가 없게 되는 것 입니다.


참고로 아예 탭 설정을 바꿔 버리는 방법도 있습니다.

추후에 다시 이런 문제가 생기는걸 미연에 방지 하기 위함이지요~~~


댓글 1개: