почему мой код ломается, когда переменная расширения равна единице
Я работал над кодом для сортировщика файлов и столкнулся с проблемой: когда переменная расширения равна только 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")
Надеюсь, поможет !