Получить программу на Python создающую по шаблону на языке Markdown презентацию Powerpoint c фотографиями и характеристиками товаров
Цель задания:
-
Создать программу, состоящую из нескольких модулей
-
Развивать проект от простого сложного
-
Использовать функции-заглушки (stab) на начальном этапе разработки
-
Дать возможность слушателям с разными уровнями владения Python довести приложение до подходящего для них уровня сложности.
-
Практически использовать возможности Python:
- запуск внешней команды (модуль subprocess)
- генераторные функции
- словари
- lambda-выражения и передача параметров-функций
- строковые методы, str.format_map
- запись и чтение из файлов
- csv - файлы
- работа с базами данных
Не обязательно делать все этапы задания:
Будем считать. что практика по вводному курсу пройдена если сделаны версии до 3й
А по второму курсу, если до версии 5
1) Установите систему контроля версий git. Сайт программы https://git-scm.com 2) Загрузите папку проекта из репозитория github
Можно скопировать репозитарий в папку
mylab
следующей командой:
git clone https://github.com/koch-econ/devops_py_lab.git mylab
3) рассмотрите структуру папки проекта
папка / файл | описание |
---|---|
sh | примеры решения сходных задач на bash |
py | файлы python |
py/*_ver_1.py | заготовки файлов для версии 1 проекта |
py/data_source_ver_N.py | модуль функций получения данных для версии N проекта |
py/main_ver_N.py | основная программа |
py/markdown2output_ver_N.py | преобразование в выходной формат (.pptx) |
pic | файлы картинок |
pic/product_id.png | фотография товара с артикулом product_id.png |
tmpl | шаблоны презентаций в формате Markdown |
csv | текстовые файлы данных с разделителем полей ';' |
csv/wb_dquotes.csv | все поля закавычены " |
csv/wb.csv | все текстовые фоля закавычены " |
csv/wb_wo_dquotes.csv | все поля без кавычек |
out | папка для сгенерированных программой файлов |
out/slides_ver_N.md | файлы, сгенерированные программой Вашей программой |
out/slides_obrazec_ver_N.md | образцы файлов, которые нужно сгенерировать |
out/slides_obrazec_ver_N.pptx | образцы файлов, которые нужно сгенерировать |
out/slides_obrazec_ver_N.html | образцы файлов, которые нужно сгенерировать |
out/slides_ver_N.pptx | файлы, сгенерированные программой Вашей программой |
out/slides_ver_N.html | файлы, сгенерированные программой Вашей программой |
out/slides_obrazec_ver_N.md | папка для сгенерированных программой файлов |
%%file csv/wb.csv
"product_id";"vendor";"model";"price";"category"
13883932;"StarWind";"Мини-печь smo2003";5597;5
8483040;"BBK";"Микроволновая печь соло 20MWS-711M/WS";4173;5
65374769;"ATLANT";"Холодильник Минск ХМ 4012 022";30000;6
70598275;"Candy";"Стиральная машина CS4 1061DB1/2-07";22941;6
Overwriting csv/wb.csv
%%file csv/wb_wo_dquotes.csv
product_id;vendor;model;price;category
13883932;StarWind;Мини-печь smo2003;5597;5
8483040;BBK;Микроволновая печь соло 20MWS-711M/WS;4173;5
65374769;ATLANT;Холодильник Минск ХМ 4012 022;30000;6
70598275;Candy;Стиральная машина CS4 1061DB1/2-07;22941;6
Overwriting csv/wb_wo_dquotes.csv
%%file csv/wb_dquotes.csv
"product_id";"vendor";"model";"price";"category"
"13883932";"StarWind";"Мини-печь smo2003";"5597";"5"
"8483040";"BBK";"Микроволновая печь соло 20MWS-711M/WS";"4173";"5"
"65374769";"ATLANT";"Холодильник Минск ХМ 4012 022";"30000";"6"
"70598275";"Candy";"Стиральная машина CS4 1061DB1/2-07";"22941";"6"
Overwriting csv/wb_dquotes.csv
%ls pic
13883932.png 70598275.png category_5.jpeg
65374769.png 8483040.png category_6.jpeg
mkdir tmpl
%%file tmpl/category_ver_1.md
## Техника для кухни

* * *
Overwriting tmpl/category_ver_1.md
%%file tmpl/category_ver_4.md
## Техника для кухни

* * *
Writing tmpl/category_ver_4.md
%%file tmpl/slides_ver_1.md
## мини-печь StarWind
:::::::::::::: {.columns}
::: {.column }
* вендор: StarWind
* модель: Мини-печь smo2003
* артикул: 13883932
* цена: 5597
:::
::: {.column }
{width=120px}
:::
::::::::::::::
## Микроволновая печь соло 20MWS-711M/WS
:::::::::::::: {.columns}
::: {.column }
* вендор: BBK
* модель: Микроволновая печь соло 20MWS-711M/WS
* артикул: 8483040
* цена: 4173
:::
::: {.column }
{width=120px}
:::
::::::::::::::
Overwriting tmpl/slides_ver_1.md
%%file tmpl/slides_ver_2.md
## {model}
:::::::::::::: {.columns}
::: {.column }
* вендор: {vendor}
* модель: {model}
* артикул: {product_id}
* цена: {price}
:::
::: {.column }
{width=120px}
:::
::::::::::::::
* * *
Overwriting tmpl/slides_ver_2.md
%ls out
slides_obrazec_ver_1.html slides_ver_1.pptx
!pandoc -o out/slides_obrazec_ver_1.html --self-contained --metadata title="товары WB" tmpl/category_ver_1.md tmpl/slides_ver_1.md
pandoc -o out/slides_obrazec_ver1.html --self-contained --metadata title="товары WB" template/category_ver_1.md template/slides_ver_1.md
Результат html
!pandoc -o out/slides_ver_1.pptx tmpl/category_ver_1.md tmpl/slides_ver_1.md
pandoc -o out/slides_ver_1.pptx template/category_ver_1.md template/slides_ver_1.md
Результат pptx
%ls out
slides_obrazec_ver1.html slides_ver_1.pptx
%%file py/main_ver_1.py
# import data_source_ver_N as ds
import markdown2output_ver_1.py as m2o
tmpl_category_file="tmpl/category_ver_1.md"
tmpl_slides_file="tmpl/slides_ver_1.md"
out_md_file="out/slides_ver_1.md"
out_pptx_file="out/slides_ver_1.md"
pass # объединить файлы в один в директории out
m2o.convert_to_pptx(out_md_file, out_pptx_file) # преобразовать в pptx
Writing py/main_ver_1.py
Пока без титульных слайдов категорий товаров
category_list=["Прочие устройтсва", "Климатическая техника" "Красота и здоровье", "Садовая техника","Техника для дома","Техника для кухни", "Крупная бытовая техника" ]
discount_dict={ "Candy":10, "BBK":20 }
Скидки на все товары этих вендоров
%%file tmpl/slides_ver_3.md
## {model}
:::::::::::::: {.columns}
::: {.column }
* вендор: {vendor}
* модель: {model}
* артикул: {product_id}
* цена: {price}
* окончательная цена: ${discounted_price}
* скидка по акции: ${discout}%
:::
::: {.column }
{width=120px}
:::
::::::::::::::
* * *
Writing tmpl/slides_ver_3.md
Используйте lambda-выражения для указания последовательности сортировки