почему мой код ломается, когда переменная расширения равна единице

Я работал над кодом для сортировщика файлов и столкнулся с проблемой: когда переменная расширения равна только 1, код зависает. Я пытался получить базовый ответ, например print («зал»), но это не сработало после проверки длины extensio, я был еще больше сбит с толку, потому что там четко отображалось 1, так что, пожалуйста, помогите

Пожалуйста, посмотрите выше, что я пробовал и ожидал, что пропущу это расширение и просто продолжаю работать с другими файлами в папке.

      import os
foldername=input("name of folder: ")


path=os.listdir(foldername)

with open("C:/Users/flori/OneDrive/Dokumente/code/extesions.txt","r") as f:
   
        k=f.read()
        

n=0
while len(path)!=n:
    #getting the extension from the file to sort it in the folders
    extension=path[n].split(".")
    print(len(extension))
    print(extension)
    #looking if the extesion is matching with any registerd extesion in the file "k"
    
    
    
    
    ü=0
    b=0
    with open("C:/Users/flori/OneDrive/Dokumente/code/extesions.txt","r") as f:
                
                 k=f.readlines()  

        
    while b < len(k):
          
         if len(extension)==2:
            
            for i in k:
                print(len(k)-1)
                






               
                
                print(len(extension))

                if extension[1]==k[b][:-1]:
                    print("match")
                    


                print(k[b])
                b=b+1
         
                
    
    
    
    
    
            ü=ü+1
         else:
             path[+1]
    n=n+1
    "/n"
    "/n"
    "/n"

1 ответ

В разделеpath[+1], похоже, он пытается увеличить индекс пути, но вы не обновляетеn, следовательно, вы застряли в бесконечном цикле. Правильный способ увеличить счетчик циклов:n += 1.

Строки «/n» не будут печатать новую строку. Чтобы напечатать новую строку, вы должны использоватьprint("\n").

Вы читаете файл расширений дважды. Один раз, чтобы прочитать весь контент, а затем прочитать построчно. Это излишне.

Более питонично использовать цикл for для перебора каждого файла в пути, а не цикл while.

Я попытался решить эти проблемы следующим образом:

      
import ios

foldername = input("name of folder: ")
path = os.listdir(foldername)

# Just read the extensions once and store them in a list
with open("C:/Users/flori/OneDrive/Dokumente/code/extesions.txt", "r") as f:
    extensions_list = [line.strip() for line in f.readlines()]

for filename in path:
    # Getting the extension from the file to sort it in the folders
    extension = filename.split(".")
    print(len(extension))
    print(extension)

    # If file has no extension or is a hidden file (starts with dot)
    if len(extension) < 2:
        print("Skipping file with no extension or hidden file.")
        print("\n")
        continue

    for known_extension in extensions_list:
        if extension[1] == known_extension:
            print("match")
            print(known_extension)
            break
    else:
        print("No match found for this extension.")
    
    print("\n")

Надеюсь, поможет !

Другие вопросы по тегам