Skopiuj pliki PNG do innego folderu (bez podfolderów)
Treść zadania
Wczytaj ścieżkę folderu źródłowego i docelowego. Skopiuj do folderu docelowego wszystkie pliki z rozszerzeniem .png (bez względu na wielkość liter), które leżą bezpośrednio w folderze źródłowym. Pliki w podfolderach pomiń.
- Pliki w folderze źródłowym zostają na miejscu.
- Jeśli folder docelowy nie istnieje, utwórz go (razem z brakującymi folderami nadrzędnymi). Gdy nie ma czego kopiować, nie ma znaczenia, czy go utworzysz.
- Jeśli w folderze docelowym jest już plik o tej samej nazwie, nadpisz go.
Dane wejściowe
- 1. linia: ścieżka folderu źródłowego
- 2. linia: ścieżka folderu docelowego
Dane wyjściowe
- Nazwy skopiowanych plików, każda w osobnej linii, posortowane rosnąco.
Brak plików.— jeśli w folderze źródłowym nie ma żadnego pliku.png.Folder nie istnieje.— jeśli folder źródłowy nie istnieje. Wtedy niczego nie twórz.
Uwagi
- Kopiowanie:
shutil.copy(zrodlo, cel). Folder razem z folderami nadrzędnymi tworzyos.makedirs(sciezka, exist_ok=True).
Przykład
obrazy/kot.png(obraz kota)
obrazy/opis.txtZdjęcia zwierząt
obrazy/pies.PNG(obraz psa)
obrazy/wakacje/morze.png(obraz morza)
obrazy kopia/obrazy
kot.png pies.PNG
kopia/obrazy/kot.png(obraz kota)
kopia/obrazy/morze.pngkopia/obrazy/opis.txtkopia/obrazy/pies.PNG(obraz psa)
obrazy/kot.png(obraz kota)
obrazy/pies.PNG(obraz psa)
Program utworzył folder kopia/obrazy. Pliku wakacje/morze.png nie kopiujemy, bo leży w podfolderze.
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 uruchomionografiki eksport
baner.png logo.png
eksport/grafiki/baner.pngBANER
grafiki/logo.pngLOGO
grafiki/opis.txtopis
grafiki/stare/ikona.pngIKONA
eksport/baner.pngBANER
eksport/ikona.pngeksport/logo.pngLOGO
eksport/opis.txteksport/stare/ikona.pnggrafiki/baner.pngBANER
grafiki/logo.pngLOGO
Test 2
Nie uruchomionozdjecia backup/2024/zdjecia
A.PNG b.png
zdjecia/A.PNGa
zdjecia/b.pngb
zdjecia/c.jpgc
backup/2024/zdjecia/A.PNGa
backup/2024/zdjecia/b.pngb
backup/2024/zdjecia/c.jpgzdjecia/A.PNGa
zdjecia/b.pngb
Test 3
Nie uruchomionosrc dst
logo.png
dst/inne.pnginne
dst/logo.pngstare logo
src/logo.pngnowe logo
dst/inne.pnginne
dst/logo.pngnowe logo
src/logo.pngnowe logo
Test 4
Nie uruchomionomoje zdjęcia kopia zapasowa
wakacje 1.png wakacje 2.png
moje zdjęcia/wakacje 1.pngw1
moje zdjęcia/wakacje 2.pngw2
kopia zapasowa/wakacje 1.pngw1
kopia zapasowa/wakacje 2.pngw2
Test 5
Nie uruchomionoobrazy kopia
Brak plików.
obrazy/a.jpgx
obrazy/b.png.txty
obrazy/c.png/d.txtz
kopia/a.jpgkopia/b.png.txtkopia/c.png/d.txtkopia/d.txt
Test 6
Nie uruchomionozdjecia kopia
Folder nie istnieje.
obrazy/a.pngx
kopia/a.pngobrazy/a.pngx