Итак, у меня есть код, который генерирует код html для файлов в разных папках, сгруппированных по категориям, и возвращает словарь с этим кодом html, также сгруппированным по категориям, но окончательный код не содержит файлов. отсортировано по типам. Например:
папка 1 содержит: 2 файла csv и 1 файл ppt
папка 2 содержит: 3 файла csv
, поэтому сгенерированный html ставит первым элементы в папке 1 и затем 2. Я хочу, чтобы они были отсортированы по типу файла. Кроме того, есть ли способ устранить хотя бы один из for
циклов?
my_dic={
'category_1':['C:/Users/my_user/Desktop/folder1','C:/Users/my_user/Desktop/folder2']
}
def generate_html(dic_list_paths=my_dic):
final_dic = {}
html_file='<button type="button" class="collapsible">Archivos</button><div class="content">'
html_images='<button type="button" class="collapsible">Imagenes</button><div class="content">'
for key, items in dic_list_paths.items():
name=key
for item in items:
for file in os.listdir(item):
if '~$' not in file and file.endswith(('.csv','pptx')):
rel = os.path.join(item, file)
ruta = os.path.join(item, file)
filename, file_extension = os.path.splitext(ruta)
img = image_logo[file_extension]
html_file +=f'<div class="col-md-4 d-flex align-items-stretch"> <a href="{rel}" download> <p>{file}</p>'
html_file +='</a></div>'
elif file.endswith('jpg'):
html_images +='<div class="col-md-4 d-flex align-items-stretch"> <picture>'
html_images += f'<img src="{file}"'
html_images += """ class="lazy card-img-top" """
html_images += f'alt="{file}"'
html_images +='></picture> </div>'
html_file+='</div>'
html_images+='</div>'
code=[html_file,html_images]
final_dic[name]=code
return final_dic