Importowanie pliku tekstowego

Przychodzą takie momenty, że nasz program w Pythonie musi popracować na zewnętrznym pliku. Wczytać dane, odpowiednio je przerobić, a następnie posłać dalej – czy to w postaci nowego pliku, czy w postaci wykresu. Zadania maturalne często wymagają od zdającego pracy na wielolinijkowym zestawie danych. Bez umiejętności zaimportowania zawartości pliku tekstowego było by dość ciężko (no i mało elegancko). W tym artykule pokażę jak wygląda importowanie pliku tekstowego w Pythonie.

Garść ustaleń

Wczytując plik do pamięci programu będziemy musieli podać ścieżkę dostępu do niego. Na potrzeby tego tutoriala przyjmuję, że skrypt i plik tekstowy są obok siebie w folderze, czyli na jednym poziomie. Tak będzie najprościej, bo ścieżka dostępu jest najkrótsza i najprostsza do napisania.

Tak wygląda układ plików na potrzeby tego tutoriala

Importowanie pliku funkcją open

Za wczytanie pliku będzie odpowiadała funkcja open(). Użycie jej tworzy obiekt, dzięki któremu będziemy mogli korzystać z zawartości pliku. Co ciekawe – możemy to robić na kilka sposobów:

Wczytanie pliku do jednej zmiennej

Użycie poniższego kodu sprawi, że cała zawartość pliku dane.txt, zostanie wczytana do zmiennej x. Jak to sprawdzić? Na przykład przez wydrukowanie zmiennej x za pomocą linijki print(x).

1
2
3
plik = open('dane.txt', 'r')
x = plik.read()
plik.close()

Warto zauważyć, że kod importujący plik kończy się linijką plik.close(). Zamykanie pliku to dobra praktyka, o której warto pamiętać pisząc programy.

Wczytywanie pliku linijka po linijce

Czasami nie chcemy mieć całego pliku w jednej zmiennej, ponieważ jest to dla nas mało wygodne. Z pomocą przychodzi inny sposób importowania pliku – za pomocą metody readline(). Każde jej wywołanie będzie wywoływało kolejną linijkę pliku. I tak:

1
2
3
4
plik = open('dane.txt', 'r')
x = plik.readline()
y = plik.readline()
plik.close()

Zaimportuje pierwszą linjkę pliku do zmiennej x, a drugą linijkę do zmiennej y. W ten sposób, korzystając z pętli for lub while można przelecieć przez cały plik linijka po linijce.

Import pliku tekstowego do listy

Ostatnim sposobem i jednocześnie takim, którego używam najczęściej to import pliku do listy. Ta metoda sprawi, że cała zawartość zostanie wczytana do listy, której elementami będą kolejne wiersze pliku. Za wszystko będzie odpowiadała metoda readlines(). Spójrzmy na skrypt

1
2
3
plik = open('dane.txt', 'r')
x = plik.readlines()
plik.close()

Użycie go sprawi, że zmienna x będzie listą zawierającą całą zawartość pliku dane.txt, w którym każdy element będzie kolejną linijką tegoż pliku. Bardzo fajne i wygodne do pracy.

Bonus do ostatniej metody importowania

Importowanie plików tekstowych w Pythonie wiąże się z tym, że importujemy również znaki niedrukowane takie jak '\n'. W zasadzie automatycznie w swoich skryptach, gdzie importuję pliki usuwam te znaki za pomocą specjalnej linijki, tworzącej nową, wyczyszczoną listę:

1
2
3
4
5
plik = open('dane.txt', 'r')
lista = plik.readlines()
plik.close()
#Usuwanie znaków niedrukowanych z listy
lista_new = [i.rstrip('\n') for i in lista]

Miłej pracy z plikami.