То есть, когда вы заменяете return collection_name
на print(collection_name)
, функция работает правильно?
Причина этого в том, что return
является оператором потока управления. Когда код достигает оператора return
, он немедленно останавливает свою работу и выходит из функции. Обратите внимание, что это означает, что он не переходит к следующей итерации цикла for
.
print()
не меняет поток программы; таким образом, код попадает в него, выполняет его и затем переходит к следующей итерации цикла for
.
Для этой проблемы я рекомендую
- Сделать пустой список в начале функции
- Вместо
return
ing collection_name
, добавьте его в список вместо
- После цикла
for
вернуть полный список.
Код будет выглядеть так:
def return_yml_file_names():
"""return file names from the yaml directory"""
collections = os.listdir('yaml/')
collections.remove('export_config.yaml')
collection_name_list = []
for file in collections :
with open('yaml/' + file, 'r') as f:
doc = yaml.load(f)
collection_name = doc["config"]["collection"]+".json"
collection_name_list.append(collection_name)
return collection_name_list