2013-05-20 2 views
0

У меня есть этот код:Локальная переменная не доступна

def findwordfiles(title): 
    name =[] 
    chekname =[] 
    title = title.strip() 
    found = 0 
    searchdir = '/Volumes/public/auryn/Marketing/Metadata/Auryn Reader' 
    for dirname, dirnames, filenames in os.walk(searchdir): 
     name = list(title) 
     i=0 
     j=0 
     for filename in filenames: 
      if filename.endswith((".docx")): 
       if ("Auryn_Reader_Meta_Data - " in filename): 
        hellname = filename.replace ("Auryn_Reader_Meta_Data - ","") 
        hellname = hellname.lower() 
        chekname = list(hellname) 
        for i in range (0, len(chekname)): 
         if (j < len(name)): 
          if name[j] == chekname[i]: 
           if j == (len(name)-1): 
            #raw_input("found! "+ title + " in file" + str(filename)) 
            target = os.path.join(os.getcwd(), "..") 
            shutil.copy2(os.path.join(dirname,filename), target) 
            found = 1 
           j = j+1 
          i=i+1 
       if(j/len(name) > 0.4): 
        if (j/len(name) > matchpage): 
         closematch = str(filename) 
         matchpage = j/len(name) 
       i=0 
       j=0 
    if found == 0 : 
      # THE LINE BELOW GIVES ERROR 
     selection = raw_input ("no matches found, Closeset match = " + closematch +"match %age = " + str(matchpage) + " accept? (Y/N)") 
     if (selection == 'y' or selection == 'Y'): 
      target = os.path.join(os.getcwd(), "..") 
      shutil.copy2(os.path.join(dirname,closematch), target) 
     else: 
      print "Skipped copying!" 

Когда я запускаю это, я получаю ошибку: UnboundLocalError: local variable 'closematch' referenced before assignment на отмеченной линии вблизи дна.

Что я делаю неправильно?

ответ

0

У вас нет инициализированного закрытия. Ошибка указывает на то, что программа никогда не запускала эти строки: -

 if(j/len(name) > 0.4): 
      if (j/len(name) > matchpage): 
       closematch = str(filename) 

т. Е. Он даже не обнаружил близость.

Смежные вопросы