我正在使用继承的Python程序,该程序运行正常,但没有正确的Python缩进。
if not arg_o:
print >> sys.stderr, 'Output file needed.'
print >> sys.stderr, usage
exit()
这里发生了什么? if 下方的代码是否应该缩进?
解决
查看接受的答案。事实证明,TextMate没有正确显示标签,这是一个担心。当在Vim中打开时,它被正确缩进。
答案 0 :(得分:8)
检查文件 - MPprimer.py
- 从找到的代码here。
我可以在其中看到以下几行 -
if not arg_o:
print >> sys.stderr, 'Output file needed.'
print >> sys.stderr, usage
exit()
从第175行开始。问题是这个脚本混合了标签和空格。
第175行 - if not arg_o:
- 使用4个空格作为缩进。
然而,下一行第176行 - print >> sys.stderr, 'Output file needed.'
- 使用制表符作为缩进。
在Python 2.x中,标签和空格可以混合使用,但标签内部由8个空格表示。
但是在某些编辑器(如Notepad ++,在我的系统中)中,tab只被解释为4个空格。因此,即使在那些编辑器中,它们看起来没有正确缩进,但它们实际上是正确缩进的,根据python。
请注意,混合制表符和空格不是一个好习惯,如果你在同一个脚本中混合它们,Python 3.x就会出错。
答案 1 :(得分:1)
在您的情况下,if
之前的空格是4个空格,print
之前是空格。您的编辑器可能会将选项卡显示为除Python解释之外的其他内容。
答案 2 :(得分:0)
Python documentation表示这是不正确的。它应该是这样的:
if not arg_o:
print >> sys.stderr, 'Output file needed.'
print >> sys.stderr, usage
exit()
也许你的输出来自代码的另一部分。
答案 3 :(得分:0)
是的,对你的问题的简短回答是在if语句之后的代码应该缩进以允许适当的python缩进。
答案 4 :(得分:-1)
Python缩进需要4个空格,所以如果if的整个块应该有4个空格
同时打印>>似乎不是python代码所以请参考https://docs.python.org/2.7/tutorial/introduction.html