Python if语句的未绑定变量错误
在if/elif语句下面使用变量时,我得到了“UnboundLocalError:localvariable”fileName“在赋值之前引用” 该代码采用一个文件名,并使用正则表达式从开始和结束处分离垃圾。然后返回新的文件名和文件夹名: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
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,则不会有结果,并且不会运行额外的代码,因此问题不会得到解决