Использование функции в Python для получения списка имен папок - PullRequest
1 голос
/ 21 апреля 2019

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

Я уже пытался использовать функцию, которую я ранее закодировал и работал нормально, но я не могу заставить ее работать для этой конкретной программы.

import os
folder_path = "C:\\Users\\Anonymous\\Desktop\\Test"
# function header
# def function_name(parameter_list)
def expand_folders(folder_names):
# declare an empty dictionary
    result_dict= {}
# for each folder name
for name in folder_names:
# get the full path of folder
    folder = os.path.join(folder_path, name)
# store name as key and the list of files as value
# after this line the dictionary will have one key-value pair
    result_dict[name] = os.listdir(folder)
return result_dict



print("Folders List")
print(os.listdir(folder_path))
print()
# an empty list to keep selected folder names
folder_names = []
while True:
# get folder name
    name = input("Select a folder to expand: ")
    if(name == 'Q' or name == 'q'):
        break
folder_names.append(name)
result_dict = expand_folders(folder_names)
print(result_dict)

Ожидаемые результаты заставят программу запросить выбор папки, например, Список папок: [1,2,3,4,5]

Выберите папку для списка:1 Выберите папку для списка: 3 Выберите папку для списка: Q {'1': ['file11.txt'], '3': ['file13.txt']}

Ответы [ 2 ]

3 голосов
/ 21 апреля 2019

Несколько вещей не так:

  1. Ваш отступ несовместим.Как упоминалось в @Smart Pointer, отступы очень важны в Python, поскольку интерпретатор знает, какой код находится внутри определенного цикла / функции.

  2. folder = os.path.join(folder_path, name) приведет кдля переменной folder устанавливается значение folder_path плюс имя последней папки в folder_names.

Вот пересмотренный код:

import os
folder_path = "C:\\"
# function header
# def function_name(parameter_list)
def expand_folders(folder_names):
    # declare an empty dictionary
    result_dict= {}
    # for each folder name
    folder = folder_path
    for name in folder_names:
        # get the full path of folder
        folder = os.path.join(folder, name)
    # store name as key and the list of files as value
    # after this line the dictionary will have one key-value pair
    result_dict[name] = os.listdir(folder)
    return result_dict



print("Folders List")
print(os.listdir(folder_path))
print()
# an empty list to keep selected folder names
folder_names = []
while True:
    # get folder name
    name = input("Select a folder to expand: ")
    if(name == 'Q' or name == 'q'):
        break
    folder_names.append(name)
    result_dict = expand_folders(folder_names)
    print(result_dict)
0 голосов
/ 21 апреля 2019

Ваш код в порядке, просто исправьте отступ (это действительно важно в Python):

def expand_folders(folder_names):
    result_dict= {}
    for name in folder_names:
        folder = os.path.join(folder_path, name)
        result_dict[name] = os.listdir(folder)
    return result_dict
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...