Python:如何解决IndentationError

Python:如何解决IndentationError,python,indentation,Python,Indentation,我的契约错误似乎无法解决。 #/usr/bin/env python 导入操作系统 导入glob 进口舒蒂尔 进口诱变剂 从系统导入退出 musicdir=raw_input(“音乐文件位于哪个目录?:”) musfile=glob.glob(musicdir+'/'+“*.mp3”) musfile1=glob.glob(musicdir+'/'+“*.flac”) musfile.extend(musfile1) newmusicdir=raw_input(“音乐文件应组织到哪个目录?:”

我的契约错误似乎无法解决。

#/usr/bin/env python
导入操作系统
导入glob
进口舒蒂尔
进口诱变剂
从系统导入退出
musicdir=raw_input(“音乐文件位于哪个目录?:”)
musfile=glob.glob(musicdir+'/'+“*.mp3”)
musfile1=glob.glob(musicdir+'/'+“*.flac”)
musfile.extend(musfile1)
newmusicdir=raw_input(“音乐文件应组织到哪个目录?:”)
完成=错误
虽然没有这样做:
对于m in musfile:
如果是musfile:
尝试:
musta=诱变剂.File(m,easy=True)
mar=str(musta['artist'][0])
mal=str(musta['album'][0])
mti=str(musta['title'][0])
mtr=str(musta['tracknumber'][0])
os.makedirs(newmusicdir+'/'+mar+'/'+mal+'/'))
除操作错误外:
通过
最后:
尝试:
如果m.endswith('.mp3'):
重命名(m,mtr+'-'+mar+'-'+mti+'.mp3')
m=mtr+'-'+mar+'-'+mti+'.mp3'
shutil.move(m,newmusicdir+'/'+mar+'/'+mal+'/'))
elif m.endswith(“.flac”):
操作系统重命名(m,mtr+'-'+mar+'-'+mti+'.flac')
m=mtr+'-'+mar+'-'+mti+'.flac'
shutil.move(m,newmusicdir+'/'+mar+'/'+mal+'/'))
elif非多文件:
打印“看来我们已经完成了。请按退出”
原始输入()
系统出口(0)

可能的原因是制表符和空格字符混合。你应该在任何地方都使用其中一个。配置编辑器以执行此操作。建议设置为4个空格缩进。对于vim,这将是
设置ts=4 sw=4 expandtab

在你的问题中发布你的错误将减少被否决的可能性,而不是要求人们获取你的代码并自己运行它


正如@Mu Mind所说,您还有一个
try
块,除了
finally
子句之外没有
。由于您尚未发布错误,我不能确定,但我敢打赌,如果您阅读它,它会显示“第39行意外缩进…”或类似内容。请删除该
try
或添加异常处理。

您有一个
try
块(从第30行开始),没有
除外
我没有看到第二个
除外
块。这应该会破坏它,但我不认为它会给你一个
索引错误
,因此你可能会有更多的问题。

你有没有看过pep8(),它会自动检查你的代码是否有错误

test.py:12:80:E501行太长(86个字符)
测试py:18:1:W191压痕包含标签
test.py:32:18:E231在“,”之后缺少空格
test.py:33:10:E225运算符周围缺少空格
test.py:42:16:W292文件末尾没有换行符

发布准确的错误-可能包含行号!同时在错误附近张贴代码。很可能缩进不当。最后,请在这里发布代码之前将所有制表符替换为4个空格。如果正确答案为您解决了问题,则应将其标记为“已接受”。单击答案旁边的复选标记。您可能指的是一个发布错误消息但没有任何源代码的人(Q必须已被删除,我现在找不到它)。我认为您很好,但正如其他人所说,如果包含实际的错误消息,会使问题变得更好。好的,谢谢。你知道我将如何配置Geany来实现这一点吗?因为我使用的是IDE。@wkoomson:@wkoomson:你看过Geany的帮助页面了吗?就是这样!谢谢,我不知道每次使用try语句时都必须使用and except语句。@wkoomson:您可以使用不带except语句的try/finally块。但是,如果您既没有“除了”也没有“最后”,那么try语句就没用了。@wkoomson:似乎很清楚。你在用什么教程?它确实给出了一个缩进错误当我尝试它时,它给了我一个
SyntaxError
,但我又尝试了一次,这次把
try
块放在
if
中,它产生了一个
IndendationError
,所以我想这取决于……但是,这些样式警告实际上都与问题无关。
#!/usr/bin/env python
import os
import glob
import shutil
import mutagen
from sys import exit

musicdir = raw_input("What directory are the music files located in? : ")
musfile = glob.glob(musicdir + '/' + "*.mp3")
musfile1 = glob.glob(musicdir + '/' + "*.flac")
musfile.extend(musfile1)
newmusicdir = raw_input("What directory should the music files be organized into? : ")


done = False

while not done:
    for m in musfile:
        if musfile:
            try:
                musta = mutagen.File(m, easy=True)
                mar = str(musta['artist'][0])
                mal = str(musta['album'][0])
                mti = str(musta['title'][0])
                mtr = str(musta['tracknumber'][0])
                os.makedirs(newmusicdir + '/' + mar + '/' + mal + '/')
            except OSError:
                pass
            finally:
                try:
                    if m.endswith('.mp3'):
                        os.rename(m,mtr + ' - ' + mar + ' - ' + mti + '.mp3')
                        m =mtr + ' - ' + mar + ' - ' + mti + '.mp3'
                        shutil.move(m,newmusicdir + '/' + mar + '/' + mal + '/')
                    elif m.endswith('.flac'):
                        os.rename(m,mtr + ' - ' + mar + ' - ' + mti + '.flac')
                        m = mtr + ' - ' + mar + ' - ' + mti + '.flac'
                        shutil.move(m,newmusicdir + '/' + mar + '/' + mal + '/')
        elif not musfile:
                print "Looks like we're done here. Please press <enter> to exit"
                raw_input()
                sys.exit(0)