Для реальной задачи используйте os.walk.
Пробел после запятой -- зло!
def filegraph(current, last):
if current in visited:
print( visited, ' visited')
print(node)
for key in node:
print('%s -> %s' % (key, node[key]), end = ' \n')
print(current, ' Посещено')
return #*Сразу выходим, чтобы уменьшить вложенность кода*
#spisok.clear()
current_dir_items = [] #*это список файлов в текущей директории, то что он был глобальным создавало проблемы ниже*
names = os.listdir(current)
visited.append(current)
print(current, ' Текущая директория')
print(last, ' Последняя директория')
for name in names:
directory = os.path.join(current, name)
if os.path.isdir(directory) == True:
current_dir_items.append(directory)
print(directory, 'директория')
print( current_dir_items, ' список')
print(last)
node[current] = last, current_dir_items #Добавляем в словарь !!!список не копируется, мы помещаем в словарь ссылку на него!!!
if (last in node) #*логика на исключениях -- плохая идея*
print(node[last], ' last' )
else
print(' Ключа нет')
print(node[current], ' current')
if len(current_dir_items) != 0:
#for a in range(0, len(current_dir_items)):
# if node[current][1][a] not in visited:
for next_item in current_dir_items: #*по возможности не используйте for in range(len)*
if next_item not in visited:
time.sleep(3)
os.chdir(next_item) #*код становится проще*
for key in node:
print('%s -> %s' % (key, node[key]), end = ' \n')
print(next_item, ' current ', '-' * 10 )
return filegraph(next_item, current) #тут происходил spisok.clear() и портил вам данные в словаре.
else:
time.sleep(3)
print(' Возвращение ' )
print(node[current][0], ' current 0' )
for key in node:
print('%s -> %s' % (key, node[key]), end = ' \n')
return filegraph(node[current][0], '')