2012-12-21 3 views
-6

왜 내가 난처한 상황에 빠진입니다 ... 컴파일되지 않습니다 ...파이썬 루프 구문 오류?

for files in glob.glob("*.txt"): 
    f=open(files) 
    for lines in f: 
     print lines 

내가 얻을 :

File "teleparse.py", line 21 
for lines in f: 
^ 
IndentationError: unexpected indent 
+10

들여 쓰기 공간에 탭과 공백이 섞여 있습니까? –

+1

그는 물론 –

+3

두 번째 for 루프와 인쇄물 앞에 탭이 있습니다. 적어도 게시 한 항목에서는 공백으로 바꾸십시오. PEP8에서는 [탭과 공백을 섞어서 사용하지 마십시오.] (http://www.python.org/dev/peps/pep-0008/#tabs-or-spaces)라고 말합니다. PEP8에서는 탭 위에 공백을 둘 것을 권장합니다. – Levon

답변

6

는 "아니, 내가 들여 쓰기는 탭이 포함되어 있는지 확인했습니다."

당신은 틀렸어 :

>>> s = """ 
... 
...  for files in glob.glob("*.txt"): 
...   f=open(files) 
...   for lines in f: 
...     print lines 
... """ 
>>> 
>>> for line in s.splitlines(): 
...  print repr(line) 
... 
'' 
'' 
' for files in glob.glob("*.txt"):' 
'  f=open(files)' 
'\t for lines in f:' 
'\t\t print lines' 

당신은 당신이 탭과 공백을 혼합하고 확인하는 python -tt yourprogramname.py를 사용할 수 있습니다.

+0

좋은 측정을 위해 http://www.doughellmann.com/PyMOTW/tabnanny/에 던져 넣을 것입니다. –

1

탭과 공백이 혼재하는 것을 제외하고는 (PEP 8 참조), 열린 파일 다음에 두 번째 for -loop이 나타나는 이유는 무엇입니까?

은 (바람직하게는 전용 공간을 이용하여) 다음과 같이되어야한다

for files in glob.glob("*.txt"): 
    f=open(files) 
    for lines in f: 
     print lines 

하지
for files in glob.glob("*.txt"): 
    f=open(files) 
     for lines in f: 
      print lines 

되는 오류 메시지 상태로서 "예기치 들여"이.

+0

@downvoters ..이 문제는 무엇입니까? – Levon

+0

내 downvote 아니라 OP의 관점에서 내부 루프 들여 쓰기 보지 않았다. 원래의 루프는 잘 보였다 ([편집 내역] (http://stackoverflow.com/posts/13996762/revisions) 참조). 좋은 의미로 인해서 그러나 나는 불행한 편집이 지금은 다르게 보인다고 생각한다. – DSM

+0

@ Levon DSM이 이미 깔끔하게 대답 한 후에도 여러 번 질문을 편집하고 있는데, 왜 내가 언젠가 그것을 downvoted했는지 말하기는 어렵습니다. 어쨌든 나는 당신의 대답이 이제 괜찮아 보이는 것처럼 투표를 되돌려 놓습니다 .- – joaquin