Python if语句的未绑定变量错误

Python if语句的未绑定变量错误,python,python-3.x,Python,Python 3.x,在if/elif语句下面使用变量时,我得到了“UnboundLocalError:localvariable”fileName“在赋值之前引用” 该代码采用一个文件名,并使用正则表达式从开始和结束处分离垃圾。然后返回新的文件名和文件夹名: input: '[subcompany] series title - 01 [more junk].mkv' desired output: ('series title - 01.mkv', 'series title') 麻烦代码: def name

在if/elif语句下面使用变量时,我得到了“UnboundLocalError:localvariable”fileName“在赋值之前引用”

该代码采用一个文件名,并使用正则表达式从开始和结束处分离垃圾。然后返回新的文件名和文件夹名:

input:
'[subcompany] series title - 01 [more junk].mkv'

desired output:
('series title - 01.mkv', 'series title')
麻烦代码:

def nameFix(f):
    start, end = os.path.splitext(f)

    if f.endswith('mkv') and f.startswith('[H'):
        fileName = fileReg.findall(f)
    elif f.endswith('mkv') and f.startswith('['):
        fileName=altReg.findall(f)


    folder = folderReg.findall(fileName[0][1])
    fileFix = fileName[0][1] + end
    fixFolderName = folder[0]
    return (fileFix, fixFolderName)

基本上,因为您没有
else
子句,如果
if
elif
条件的计算结果都不是
True
,则不会定义
文件名。也许可以尝试在
else
子句中返回
f
,以便函数退出:

if f.endswith('mkv') and f.startswith('[H'):
    fileName = fileReg.findall(f)
elif f.endswith('mkv') and f.startswith('['):
    fileName=altReg.findall(f)
else:
    return f

基本上,因为您没有
else
子句,如果
if
elif
条件的计算结果都不是
True
,则不会定义
文件名。也许可以尝试在
else
子句中返回
f
,以便函数退出:

if f.endswith('mkv') and f.startswith('[H'):
    fileName = fileReg.findall(f)
elif f.endswith('mkv') and f.startswith('['):
    fileName=altReg.findall(f)
else:
    return f

显然if和elif语句没有运行,所以文件名还没有分配,所以错误只是说“这不是变量”

显然if和elif语句没有运行,所以文件名还没有分配,所以错误只是说“这不是变量”

尝试使用输入和预期输出为代码添加注释。这是一个很好的做法。您也得到了多个没有解释的变量。请尝试使用输入和预期输出向代码添加注释。这是一个很好的做法。您得到了多个变量,但没有解释。另一个答案说,解决方案是使用else语句将文件名单独指定为默认名称。BTW如果您返回None,则不会有结果,并且额外的代码不会运行,因此问题没有解决。另一个答案说,解决方案是使用else语句将fileName单独指定为默认名称btw如果返回None,则不会有结果,并且不会运行额外的代码,因此问题不会得到解决