Zamień miejscami treści dwóch plików
Treść zadania
Wczytaj ścieżki dwóch plików A i B. Zamień ich treści miejscami:
- plik A ma mieć dawną treść pliku B,
- plik B ma mieć dawną treść pliku A.
Nazwy plików się nie zmieniają. Jeśli obie ścieżki są takie same, plik pozostaje bez zmian.
Dane wejściowe
- 1. linia: ścieżka pliku A
- 2. linia: ścieżka pliku B
Dane wyjściowe
- Gdy oba pliki istnieją — nic (wynikiem są zmienione pliki).
Plik nie istnieje.— jeśli którakolwiek ścieżka nie wskazuje istniejącego pliku. Wtedy niczego nie zmieniaj i nie twórz.
Uwagi
- Najprościej wczytać obie treści do zmiennych, a dopiero potem zapisać każdy plik od nowa.
Przykłady
dane/plik2.txtKot ma Alę i mysz.
plik1.txtAla ma kota
plik1.txt dane/plik2.txt
(brak)
dane/plik2.txtAla ma kota
plik1.txtKot ma Alę i mysz.
plik1.txtAla ma kota
plik1.txt plik2.txt
Plik nie istnieje.
plik1.txtAla ma kota
plik2.txt
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 uruchomionoa.txt b.txt
(brak)
a.txtPierwszy plik
b.txtDrugi plik
a.txtDrugi plik
b.txtPierwszy plik
Test 2
Nie uruchomionodane/a.txt kopie/b.txt
(brak)
dane/a.txtpierwszy plik
kopie/b.txt
dane/a.txtkopie/b.txtpierwszy plik
Test 3
Nie uruchomionomoje pliki/ą.txt moje pliki/ę.txt
(brak)
moje pliki/ą.txtzażółć gęślą
moje pliki/ę.txtjaźń
moje pliki/ą.txtjaźń
moje pliki/ę.txtzażółć gęślą
Test 4
Nie uruchomionox.txt x.txt
(brak)
x.txtjeden dwa
x.txtjeden dwa
Test 5
Nie uruchomionoa.txt b.txt
Plik nie istnieje.
a.txtA
a.txtA
b.txt
Test 6
Nie uruchomionoa.txt b.txt
Plik nie istnieje.
b.txtB
a.txtb.txtB