Dodaj wiersz na początku pliku
Treść zadania
Wczytaj ścieżkę pliku tekstowego i wiersz tekstu. Dopisz ten wiersz na początku pliku — jako nowy, pierwszy wiersz. Dotychczasowa treść pliku ma pozostać bez zmian pod nowym wierszem. Pusty plik po zmianie zawiera tylko nowy wiersz.
Dane wejściowe
- 1. linia: ścieżka pliku
- 2. linia: wiersz do dodania (może zawierać spacje)
Dane wyjściowe
- Gdy plik istnieje — nic (wynikiem jest zmieniony plik).
Plik nie istnieje.— jeśli podana ścieżka nie wskazuje istniejącego pliku. Wtedy nie twórz żadnego pliku.
Uwagi
- Do pliku nie da się „dopisać na początku” — wczytaj całą treść, a potem zapisz plik od nowa: najpierw nowy wiersz, potem starą treść.
Przykłady
notatki.txtkupić mleko zadzwonić do babci
notatki.txt TODO:
(brak)
notatki.txtTODO: kupić mleko zadzwonić do babci
(pusty katalog)
notatki.txt To jest nowy wiersz dodany na początku pliku.
Plik nie istnieje.
notatki.txt
Pliku nie było, więc program niczego nie tworzy.
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 uruchomionoplan.txt Poniedziałek:
(brak)
plan.txtzakupy sprzątanie
plan.txtPoniedziałek: zakupy sprzątanie
Test 2
Nie uruchomionodane/log.txt === Początek logu ===
(brak)
dane/log.txtlinia 1 linia 2
dane/log.txt=== Początek logu === linia 1 linia 2
Test 3
Nie uruchomionopusty.txt Pierwszy wiersz
(brak)
pusty.txt
pusty.txtPierwszy wiersz
Test 4
Nie uruchomionob.txt nowy początek
(brak)
a.txta
b.txtb bb
a.txta
b.txtnowy początek b bb
Test 5
Nie uruchomionomoje pliki/lista.txt Zakupy:
(brak)
moje pliki/lista.txtjajka
moje pliki/lista.txtZakupy: jajka
Test 6
Nie uruchomionolog.txt ABC
Plik nie istnieje.
dane/log.txtx
dane/log.txtx
log.txt