【问题标题】:Python loop syntax error? [closed]Python循环语法错误? [关闭]
【发布时间】:2012-12-09 10:11:34
【问题描述】:

为什么不能编译...我很难过...

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

【问题讨论】:

  • 您是否在缩进空间中混合制表符和空格?
  • 您的第二个 for 循环和打印在它们前面有标签 - 至少在您发布的内容中,用空格替换。正如 PEP8 所说的 never mix tabs and spaces。 PEP8 建议在制表符上使用空格。
  • 不,我确保缩进只包含制表符。
  • 嗯 - 根据 PEP8,它应该只是空格 :) 但没关系,这就是正在发生的事情......
  • @FrédéricHamidi:我在发布任何答案之前进行了编辑。是的,现在不一致。我会尝试恢复更改。

标签: python loops syntax for-loop


【解决方案1】:

“不,我已经确定缩进只包含制表符。”

你错了:

>>> 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 来确认您正在混合制表符和空格。

【讨论】:

【解决方案2】:

除了制表符和空格的潜在混合(请参阅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

如错误消息所述,是“意外缩进”。

【讨论】:

  • @downvoters .. 这个问题是什么?
  • 不是我的反对意见,但从 OP 的角度来看,内部循环看起来没有缩进。原来的循环看起来还不错(参见edit history),并且出于善意但我认为不幸的编辑现在看起来不同了。
  • @Levon 您多次编辑您的问题,即使在 DSM 已经巧妙地回答了它之后,也很难说为什么我有时会否决它。无论如何,我将投票转回给您,因为您的答案现在看起来不错;-)
  • @DSM:我的错。我将代码恢复为原始格式。
  • 啊..所以我被否决了,因为原始问题已被编辑?混合制表符和空格显然存在问题(请参阅我上面的原始评论),然后我注意到另外的缩进并发布了这个答案。 (我在编辑答案时遇到问题,浏览器表现得很奇怪)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 2018-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多