Teraz dodamy naszą pierwszą funkcję.
Funkcja w kodzie to nic innego jak kawałek kodu, który wykonuje jakąś operację. Będzie nam ona potrzebna, żeby z naszych plików tekstowych pobrać ich nazwę i zawartość.
Dodaj do pliku rel_notes_generator.py
następujący kod.
rel_notes_generator.py
W Pythonie, tworzymy funkcję za pomocą słowa def
. Następnie podajemy nazwę
funkcji i opcjonalnie w nawiasie określamy parametry, które funkcja przyjmuje.
W naszym wypadku funkcja nazywa się get_release_notes
. Żeby mogła wykonać
poprawnie swoje zadanie, musimy podać jej ścieżkę do folderu, w którym znajdują
się pliki tekstowe (source_dir
).
Pierwsze koty za płoty. Idziemy dalej. Nasza funkcja ma za zadanie przejść przez
wszystkie pliki i zebrać z nich nazwę i zawartość. Zgodnie z tym co zostało
ustalone z programistami w Twoim projekcie, nazwa pliku to numer zgłoszenia, a
zawartość to opis wprowadzonych zmian w kodzie aplikacji. W związku z tym,
wygodnie będzie nam zapisać informacje zebrane przez naszą funkcję w formie
słownika (dict
), czyli takiego zbioru elementów klucz: wartość
. W Pythonie,
słownik to jeden z najważniejszych typów danych, który jest bardzo często
używany.
W naszym wypadku, taka para będzie wyglądać tak: numer zgłoszenia: opis zmian
.
Na początku dodajemy zmienną rel_notes
, która będzie przechowywać pusty
słownik ({}
). Potem ten pusty słownik wypełnimy danymi, które nasza funkcja
zbierze.
W folderze może znajdować się więcej niż jeden plik tekstowy, więc musimy zrobić
pętlę, która przejdzie po wszystkich plikach. Innymi słowy, mówimy Pythonowi,
żeby dla każdego pliku (for file
), który ma rozszerzenie TXT
(in source_dir.glob('*.txt')
):
- W zmiennej
rel_note_id
zapisał nazwę pliku (file.stem
). - Otworzył plik (
with file.open() as f
) i w zmiennejrel_note_text
zapisał jego zawartość, którą pobrał (f.read()
). - Do słownika dodał parę z numerem zgłoszenia i opisem zmian
(
rel_notes[rel_note_id] = rel_note_text
).
Kiedy pętla przejdzie po wszystkich plikach, funkcja zwróci nam wypełniony
słownik (return rel_notes
). W naszym testowym środowisku, funkcja zwróci nam
taki słownik:
Na tym etapie, tylko stworzyliśmy nową funkcję, ale jeszcze jej nie uruchomiliśmy. To zrobimy dopiero później.