if len(trashed_files) == 0 :
print "No files trashed from current dir ('%s')" % os.path.realpath(os.curdir)
else :
index=raw_input("What file to restore [0..%d]: " % (len(trashed_files)-1))
if index == "*" :
for tfile in trashed_files :
try:
tfile.restore()
except IOError, e:
import sys
print >> sys.stderr, str(e)
sys.exit(1)
elif index == "" :
print "Exiting"
else :
index = int(index)
try:
trashed_files[index].restore()
except IOError, e:
import sys
print >> sys.stderr, str(e)
sys.exit(1)
我得到了:
elif index == "" :
^
IndentationError: expected an indented block
答案 0 :(得分:63)
如错误消息所示,您有缩进错误。它可能是由标签和空格的混合引起的。
答案 1 :(得分:22)
事实上,你需要了解Python中缩进的多项内容:
在许多其他语言中,缩进不是必需的,但提高了可读性。在Python缩进中,替换关键字begin / end
或{ }
,因此是必要的。
这是在执行代码之前验证的,因此即使具有缩进错误的代码永远不会到达,它也不会起作用。
<强> 1。 &#34; IndentationError:预期缩进块&#34;
这是导致此类错误的两个主要原因:
- 你有一个&#34;:&#34;没有缩进块。
以下是两个例子:
示例1,没有缩进块:
输入:
if 3 != 4:
print("usual")
else:
输出:
File "<stdin>", line 4
^
IndentationError: expected an indented block
输出表明您需要在else:
语句之后有一个缩进的第4行
示例2,未缩进的块:
输入:
if 3 != 4:
print("usual")
输出
File "<stdin>", line 2
print("usual")
^
IndentationError: expected an indented block
输出表明您需要在if 3 != 4:
语句之后有一个缩进的第2行
- 您正在使用Python2.x,并且有多个标签和空格:
输入
def foo():
if 1:
print 1
请注意,之前是否有标签,在打印之前有8个空格。
输出:
File "<stdin>", line 3
print 1
^
IndentationError: expected an indented block
很难理解这里发生了什么,似乎有一个缩进块...但正如我所说,我使用了标签和空格,你应该永远不要那样做。
<强> 2。 &#34; IndentationError:意外缩进&#34;
缩进块非常重要,但只能缩进块。 所以基本上这个错误说:
- 你有一个没有&#34;的缩进块:&#34;在它之前。
<强> 实施例 强>
输入:
a = 3
a += 3
输出:
File "<stdin>", line 2
a += 3
^
IndentationError: unexpected indent
输出表明他没有预料到缩进块行2,那么你应该删除它。
第3。 &#34; TabError:缩进中选项卡和空格的使用不一致&#34; (仅限python3.x)
<小时/> 最后,回到你的问题:
只需查看错误的行号,然后使用以前的信息进行修复。
答案 2 :(得分:2)
我遇到了同样的问题并发现(通过this answer to a similar question)问题是我没有正确地缩进文档字符串。不幸的是,IDLE在这里没有提供有用的反馈,但是一旦我修复了文档字符串缩进,问题就消失了。
具体来说 - 生成缩进错误的错误代码:
def my_function(args):
"Here is my docstring"
....
避免缩进错误的好代码:
def my_function(args):
"Here is my docstring"
....
注意:我并不是说 这个问题,但可能,因为在我的情况下,它是!
答案 3 :(得分:0)
您可能想要检查空格和标签。选项卡默认为4个空格。但是,你的“if”和“elif”匹配,所以我不太清楚为什么。进入顶部栏中的“选项”,然后单击“配置IDLE”。检查字体/标签中右侧的缩进宽度,并确保缩进有多个空格。
答案 4 :(得分:0)
这只是一个缩进问题,因为Python非常严格。
如果您使用的是 Sublime ,则可以选择全部,点击“Python”旁边的“Python&#39;并确保你使用空格&#39;缩进。并选择Tab Width为一致,然后将Indentation转换为Spaces将所有选项卡转换为空格。