Znajdź wszystkie ścieżki plików o danej nazwie (rekurencyjnie)
Treść zadania
Wczytaj ścieżkę folderu i nazwę pliku (np. raport.txt). Przeszukaj ten folder i wszystkie jego podfoldery (na dowolnej głębokości) i wypisz ścieżki wszystkich plików o dokładnie takiej nazwie.
- Nazwy porównuj dokładnie — wielkość liter ma znaczenie (
Raport.txtto inna nazwa niżraport.txt). - Wypisuj tylko pliki. Folder o szukanej nazwie nie jest wynikiem, ale jego wnętrze też przeszukaj.
- Ścieżki wypisuj względem podanego folderu. Folder
.oznacza cały katalog roboczy.
Dane wejściowe
- 1. linia: ścieżka folderu, w którym zaczynasz szukanie (
.= cały katalog roboczy) - 2. linia: nazwa pliku
Dane wyjściowe
- Ścieżki znalezionych plików względem podanego folderu, każda w osobnej linii, posortowane rosnąco.
Nie znaleziono.— jeśli nie ma żadnego pliku o tej nazwie.Folder nie istnieje.— jeśli podana ścieżka nie wskazuje istniejącego folderu.
Uwagi
- Wszystkie pliki w folderze i jego podfolderach zwraca
os.walk()alboPath.rglob("*").
Przykłady
2023/raport.docx2023/raport.txt2023/styczeń/raport.txt2024/Raport.txtraport.txt
. raport.txt
2023/raport.txt 2023/styczeń/raport.txt raport.txt
2024/Raport.txt ma inną nazwę (wielka litera), a 2023/raport.docx — inne rozszerzenie.
2023/raport.docx2023/raport.txt2023/styczeń/raport.txt2024/Raport.txtraport.txt
2023 raport.txt
raport.txt styczeń/raport.txt
Ścieżki są podane względem folderu 2023.
Potrzebujesz teorii?
Zasady obowiązujące w rozdziale 20
Poniższe zadania polegają na wczytywaniu danych ze standardowego wejścia (stdin), wykonywaniu operacji na plikach i folderach oraz wypisywaniu wyniku na standardowe wyjście (stdout).
Każde zadanie jest osobnym, niezależnym programem.
Konwencje wspólne:
- Program działa na plikach w katalogu roboczym, czyli w folderze, w którym jest uruchamiany. Wszystkie ścieżki na wejściu są względne wobec katalogu roboczego i używają
/jako separatora, np.dane/raport.txt. Ścieżki wczytuj jako całe linie — mogą zawierać spacje. - Sprawdzarka przed każdym testem tworzy nowy katalog roboczy z plikami opisanymi w teście, uruchamia program, a potem sprawdza zarówno wypisany tekst, jak i zawartość plików.
- W przykładach Pliki przed: pokazuje zawartość katalogu roboczego przed uruchomieniem programu, a Pliki po: — stan wybranych plików po jego zakończeniu. Każda linia to ścieżka pliku, a linie zaczynające się od
|to kolejne wiersze jego treści. Ścieżka zakończona/to pusty folder,(rozmiar: N B)oznacza plik o rozmiarze N bajtów, a(usunięty)— plik, którego po zakończeniu programu ma już nie być. - Pliki tekstowe są zapisane w kodowaniu UTF-8 — otwieraj je przez
open(sciezka, encoding="utf-8"). - Rozszerzenie to końcówka nazwy pliku od ostatniej kropki (razem z nią), np.
archiwum.tar.gzma rozszerzenie.gz. Rozszerzenia porównuj bez względu na wielkość liter (.TXTto też.txt). - Listy plików wypisuj po jednym w linii, jako ścieżki względem podanego folderu z separatorem
/(np.2024/raport.txt), posortowane rosnąco tak, jak sortuje napisy funkcjasorted(). Na Windowsie ścieżki mają separator\— zamień go na/(np. metodąPath.as_posix()). - Komunikaty dla przypadków brzegowych wypisuj dokładnie w podanej postaci, np.
Folder nie istnieje.,Plik nie istnieje.,Brak plików. - Program nie wypisuje komunikatów typu „Podaj ścieżkę:”. Tekst podany w
input("…")jest ignorowany przez sprawdzarkę.
Zadanie pochodzi z otwartego zbioru Nauka-Programowania (z rozwiązaniami wzorcowymi). Zgłoś błąd w treści lub testach.
Przywrócono Twój zapisany kod.
Python uruchomi się w przeglądarce przy pierwszym teście.
Kod zapisuje się automatycznie w tej przeglądarce. Tab wstawia wcięcie; aby opuścić edytor klawiaturą, naciśnij Esc, a potem Tab.
Testy
Program dostaje „Wejście” przez input() i musi wypisać „Oczekiwane wyjście”. Liczby porównywane są z tolerancją 0,01, a tekst podany w input("…") nie jest sprawdzany.
Test 1
Nie uruchomiono. notatki.md
notatki.md projekty/notatki.md projekty/web/notatki.md
inne/Notatki.mde
notatki.mda
projekty/notatki.mdb
projekty/web/notatki.mdc
projekty/web/notatki.txtd
Test 2
Nie uruchomionoprojekty notatki.md
notatki.md web/notatki.md
inne/Notatki.mde
notatki.mda
projekty/notatki.mdb
projekty/web/notatki.mdc
projekty/web/notatki.txtd
Test 3
Nie uruchomiono. raport.md
Nie znaleziono.
inne/Notatki.mde
notatki.mda
projekty/notatki.mdb
projekty/web/notatki.mdc
projekty/web/notatki.txtd
Test 4
Nie uruchomionoa/b cel.bin
c/d/e/cel.bin x/cel.bin
a/b/c/d/e/cel.bina/b/x/cel.bina/cel.bin
Test 5
Nie uruchomionokopie raport.txt
raport.txt/raport.txt
kopie/raport.txt/inny.txty
kopie/raport.txt/raport.txtx
Test 6
Nie uruchomionopuste raport.txt
Nie znaleziono.
puste/
Test 7
Nie uruchomionokopie a.txt
Folder nie istnieje.
dane/a.txt