Zamień miejscami treści dwóch plików

Zadanie 11 z 15 · rozdział 20Trudność: 2 z 3filesswapread/write

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

Pliki przed uruchomieniem
  • dane/plik2.txt
    Kot ma Alę
    i mysz.
  • plik1.txt
    Ala ma kota
Wejście
plik1.txt
dane/plik2.txt
Wyjście
(brak)
Pliki po uruchomieniu
  • dane/plik2.txt
    Ala ma kota
  • plik1.txt
    Kot ma Alę
    i mysz.
Pliki przed uruchomieniem
  • plik1.txt
    Ala ma kota
Wejście
plik1.txt
plik2.txt
Wyjście
Plik nie istnieje.
Pliki po uruchomieniu
  • plik1.txt
    Ala ma kota
  • plik2.txt(usunięty)
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
a.txt
b.txt
Oczekiwane wyjście
(brak)
Pliki przed uruchomieniem
  • a.txt
    Pierwszy plik
  • b.txt
    Drugi plik
Pliki po uruchomieniu
  • a.txt
    Drugi plik
  • b.txt
    Pierwszy plik

Test 2

Nie uruchomiono
Wejście
dane/a.txt
kopie/b.txt
Oczekiwane wyjście
(brak)
Pliki przed uruchomieniem
  • dane/a.txt
    pierwszy
    plik
  • kopie/b.txt(pusty plik)
Pliki po uruchomieniu
  • dane/a.txt(pusty plik)
  • kopie/b.txt
    pierwszy
    plik

Test 3

Nie uruchomiono
Wejście
moje pliki/ą.txt
moje pliki/ę.txt
Oczekiwane wyjście
(brak)
Pliki przed uruchomieniem
  • moje pliki/ą.txt
    zażółć
    gęślą
  • moje pliki/ę.txt
    jaźń
Pliki po uruchomieniu
  • moje pliki/ą.txt
    jaźń
  • moje pliki/ę.txt
    zażółć
    gęślą

Test 4

Nie uruchomiono
Wejście
x.txt
x.txt
Oczekiwane wyjście
(brak)
Pliki przed uruchomieniem
  • x.txt
    jeden
    dwa
Pliki po uruchomieniu
  • x.txt
    jeden
    dwa

Test 5

Nie uruchomiono
Wejście
a.txt
b.txt
Oczekiwane wyjście
Plik nie istnieje.
Pliki przed uruchomieniem
  • a.txt
    A
Pliki po uruchomieniu
  • a.txt
    A
  • b.txt(usunięty)

Test 6

Nie uruchomiono
Wejście
a.txt
b.txt
Oczekiwane wyjście
Plik nie istnieje.
Pliki przed uruchomieniem
  • b.txt
    B
Pliki po uruchomieniu
  • a.txt(usunięty)
  • b.txt
    B
Uruchom z własnymi danymi