2011-12-26 3 views
26

는 여기에 내가 들여 쓰기 오류를 얻고있다하지만이 발생하는 이유를 모르겠어요 ... 내 코드입니다.파이썬 IndentationError : 예기치 않은 들여 쓰기

- 당신이 혼합 된 탭과 공간, 즉 들여 쓰기 오류가 자주 소스의 경우>

# loop 
while d <= end_date: 
    # print d.strftime("%Y%m%d") 
    fecha = d.strftime("%Y%m%d") 
    # set url 
    url = 'http://www.wpemergencia.omie.es//datosPub/marginalpdbc/marginalpdbc_' + fecha + '.1' 
    # Descargamos fichero 
    response = urllib2.urlopen(url) 
    # Abrimos fichero 
    output = open(fname,'wb') 
    # Escribimos fichero 
    output.write(response.read()) 
    # Cerramos y guardamos fichero 
    output.close() 
    # fecha++ 
    d += delta 
+5

탭과 공간의 혼합? – taskinoor

+0

'들여 쓰기 오류'가 없습니다. 'd'와'end_date '의 정의와 함께 코드의 다른 곳에 있어야합니다. [SSCCE] (http://sscce.org/)를 제공하십시오. – Johnsyweb

+2

어떤 편집장도 공백과 탭을 시각적으로 표시 할 수있는 옵션이 있습니다. 그것을 사용하십시오. – sbk

답변

43

python -t script.py 

당신이 혼합 탭과 공백이있는 경우에 당신을 경고합니다 사용하여 프로그램을 실행합니다. 탭이

cat -A script.py 

을 실행하여 어디에 * 괜찬아 시스템에서

, 당신은 확인하실 수 있으며, 자동으로 명령

expand -t 4 script.py > fixed_script.py 

PS와 4 탭을 공백으로 변환 할 수 있습니다. 프로그래밍 할 때는 워드 프로세서가 아닌 프로그래밍 편집기 (예 : emacs, vim)를 사용해야합니다. 프로그래밍 편집기로는이 문제가 발생하지 않습니다.

PPS. emacs 사용자의 경우 M-xwhitespace-mode은 emacs 버퍼에서 cat -A과 동일한 정보를 표시합니다!

+0

그/그녀의 대답에 unutbu 완료되지 않은, 나는 동일한 문제가 cat -A script.py 사용할 때 누락 된 들여 쓰기를 즉시 볼 수 있습니다. 복사하여 붙여 넣기해도 편집기에서 들여 쓰기가 될 수 있습니다. 실제로는 그렇지 않으므로주의하십시오. –

3

식별을 위해 탭과 공백을 섞을 수 없습니다. 가장 좋은 방법은 모든 탭을 공백으로 변환하는 것입니다.

해결 방법? 각 줄 앞에 모든 공백/탭을 삭제하고 탭 또는 공백으로 균일하게 변환하지만 섞지 마십시오. 가장 좋은 해결책 : 편집기에서 자동으로 탭을 공백으로 변환하는 옵션을 활성화하십시오.

또한 실제 문제가이 블록 앞에있는 줄에있을 수 있으며 다음 식별자와 일치하지 않는 잘못된 잘못된 들여 쓰기 때문에 여기에서 오류가 발생합니다!

7

모든 탭을 찾아 메모장에서 4 공백으로 대체 ++ .IT는했다.

+0

원래 질문이 게시 된 후 1 년 반 만에 실제로 제안 할만한 새로운 것을 찾을 수 없었습니다. 에 오신 것을 환영합니다 그리고 당신이 자신의 게시물을 게시하기 전에 이전 답변을 읽어 주시기 바랍니다. 이미 존재하는 해답을 반복하지 마십시오. – Wh1T3h4Ck5

0

는 간단히에,

a = """ your entire code """ 
print a.replace(' ',' ') # first 4 spaces tab second four space from space bar 

print a.replace('here please press tab button it will insert some space"," here simply press space bar four times") 
# here we replacing tab space by four char space as per pep 8 style guide.. 

지금이 코드를 실행

변수 .. 같은에서이 줄을 지정 ... 스크립트를 복사하여 "전체 코드" "" ""아래에 넣어 ctrl + b를 사용하여 숭고하고, 지금은 들여 쓰기 된 코드를 콘솔에 출력합니다. 그것의 그것

관련 문제