Pliki o danym rozszerzeniu w folderze (bez podfolderów)

Zadanie 2 z 15 · rozdział 20Trudność: 2 z 3filesdirlistdirpathlib

Treść zadania

Wczytaj ścieżkę folderu i rozszerzenie (np. .txt). Wypisz nazwy wszystkich plików o tym rozszerzeniu, które leżą bezpośrednio w tym folderze. Nie zaglądaj do podfolderów. Foldery pomijaj, nawet jeśli ich nazwa wygląda jak nazwa pliku (np. folder stare.txt).

Rozszerzenia porównuj bez względu na wielkość liter, ale nazwy wypisuj dokładnie tak, jak są zapisane.

Dane wejściowe

  • 1. linia: ścieżka folderu
  • 2. linia: rozszerzenie z kropką, np. .txt

Dane wyjściowe

  • Nazwy pasujących plików (same nazwy, bez ścieżki folderu), każda w osobnej linii, posortowane rosnąco.
  • Brak plików. — jeśli w folderze nie ma żadnego pasującego pliku.
  • Folder nie istnieje. — jeśli podana ścieżka nie wskazuje istniejącego folderu.

Uwagi

  • Zawartość folderu zwraca os.listdir() albo Path.iterdir(). Rozszerzenie pliku poda os.path.splitext() albo Path.suffix.

Przykłady

Pliki przed uruchomieniem
  • dokumenty/lista zakupów.txt
    mleko
    chleb
  • dokumenty/notatki.TXT
    Zadzwonić do Ani.
  • dokumenty/stare/archiwum.txt(pusty plik)
  • dokumenty/zdjęcie.png(pusty plik)
Wejście
dokumenty
.txt
Wyjście
lista zakupów.txt
notatki.TXT

Plik stare/archiwum.txt leży w podfolderze, więc go pomijamy.

Pliki przed uruchomieniem

(pusty katalog)

Wejście
zdjecia
.png
Wyjście
Folder nie istnieje.
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.gz ma rozszerzenie .gz. Rozszerzenia porównuj bez względu na wielkość liter (.TXT to 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 funkcja sorted(). 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.

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
Wejście
raporty
.txt
Oczekiwane wyjście
q1.txt
q2.txt
Pliki przed uruchomieniem
  • raporty/2023/q4.txt
    d
  • raporty/q1.txt
    b
  • raporty/q2.txt
    a
  • raporty/wykres.png
    c

Test 2

Nie uruchomiono
Wejście
dane
.txt
Oczekiwane wyjście
RAPORT.TXT
a.Txt
d.txt
Pliki przed uruchomieniem
  • dane/RAPORT.TXT
    1
  • dane/a.Txt
    2
  • dane/b.txt.bak
    3
  • dane/c.csv
    4
  • dane/d.txt
    5

Test 3

Nie uruchomiono
Wejście
projekt
.py
Oczekiwane wyjście
main.py
utils.py
Pliki przed uruchomieniem
  • projekt/main.py(pusty plik)
  • projekt/modul.py/__init__.py(pusty plik)
  • projekt/test.pyc(pusty plik)
  • projekt/utils.py(pusty plik)

Test 4

Nie uruchomiono
Wejście
a/b
.md
Oczekiwane wyjście
c.md
d.md
f.MD
Pliki przed uruchomieniem
  • a/b/c.md(pusty plik)
  • a/b/d.md(pusty plik)
  • a/b/f.MD(pusty plik)
  • a/e.md(pusty plik)

Test 5

Nie uruchomiono
Wejście
moje pliki
.jpg
Oczekiwane wyjście
zdjęcie 1.jpg
zdjęcie 2.JPG
Pliki przed uruchomieniem
  • moje pliki/film.mp4(pusty plik)
  • moje pliki/zdjęcie 1.jpg(pusty plik)
  • moje pliki/zdjęcie 2.JPG(pusty plik)

Test 6

Nie uruchomiono
Wejście
puste
.txt
Oczekiwane wyjście
Brak plików.
Pliki przed uruchomieniem
  • puste/(katalog)

Test 7

Nie uruchomiono
Wejście
dane
.txt
Oczekiwane wyjście
Brak plików.
Pliki przed uruchomieniem
  • dane/a.csv
    x
  • dane/b.txt/c.csv
    y

Test 8

Nie uruchomiono
Wejście
dokumenty
.txt
Oczekiwane wyjście
Folder nie istnieje.
Pliki przed uruchomieniem
  • dane/a.txt
    x

Test 9

Nie uruchomiono
Wejście
raport.txt
.txt
Oczekiwane wyjście
Folder nie istnieje.
Pliki przed uruchomieniem
  • raport.txt
    x
Uruchom z własnymi danymi