Jak obsługiwać pliki w Pythonie

Opublikowany: 2022-03-11

W każdym języku programowania ważnym aspektem jest obsługa plików. Python obsługuje również pracę z plikami w różnych trybach — takich jak odczytywanie i zapisywanie do plików i nie tylko.

Pod koniec tego samouczka będziesz w stanie:

  • otwierać i czytać pliki w Pythonie,
  • czytać wiersze z pliku tekstowego,
  • pisać i dołączać do plików oraz
  • używaj menedżerów kontekstu do pracy z plikami w Pythonie.

Jak czytać plik w Pythonie

Aby otworzyć plik w Pythonie, możesz użyć ogólnej składni: open('file_name','mode') .

  • Tutaj file_name to nazwa pliku.

Uwaga: Jeśli plik, który chcesz otworzyć, znajduje się w bieżącym katalogu roboczym, możesz podać tylko nazwę pliku. Jeśli znajduje się w innym folderze w twoim środowisku pracy, powinieneś podać ścieżkę do pliku.

  • mode parametrów określa tryb, w którym chcesz otworzyć plik.

Domyślnym trybem otwierania pliku jest odczyt — oznaczony literą 'r' . Jednak zalecaną praktyką jest jawne określenie trybu.

Zanim zaczniemy, spójrzmy na plik lib.txt , którego użyjemy w tym przykładzie.

Pobierz plik tekstowy i kod użyte w tym samouczku z tego repozytorium GitHub.

Poniższy fragment kodu pokazuje, jak otworzyć plik tekstowy 'lib.txt' w Pythonie za pomocą funkcji open() i odczytać jego zawartość.

 file = open('lib.txt','r') contents = file.read() print(contents) file.close() # Output Hello, there! Here are a few helpful Python libraries: 1) NumPy 2) pandas 3) matplotlib 4) seaborn 5) scikit-learn 6) BeautifulSoup 7) Scrapy 8) nltk 9) Bokeh 10) statsmodels

W powyższym przykładzie

  • Funkcja open() zwraca obiekt plikowy, a my wybieramy wywołanie go file .
  • Następnie wywołujemy metodę read() w file .
  • Zmienna contents zawiera teraz zawartość pliku. I drukujemy to.
  • Wreszcie zamykamy plik.

Jeśli jednak zapomnisz zamknąć plik, możliwe będzie marnowanie zasobów. Jeśli pracujesz z dużą liczbą takich plików, zużycie pamięci może być znaczne. Dzieje się tak, ponieważ otworzyłeś kilka plików, ale żadnego z nich nie zamknąłeś.

Teraz nauczmy się lepszego sposobu otwierania plików za pomocą menedżerowie kontekstu. Poniższy fragment kodu pokazuje, jak z nich korzystać.

 with open('lib.txt','r') as f: contents = f.read() print(contents)

Używając menedżerów kontaktów do pracy z plikami, nie musisz używać metody close() . Pliki są automatycznie zamykane po zakończeniu operacji we/wy.

Jak czytać wiersze z pliku w Pythonie?

W naszym przykładowym pliku tekstowym mieliśmy tylko kilka wierszy. Wczytanie całej zawartości pliku na raz nie stanowiło więc problemu.

python-read-file

Jednak gdy musisz czytać duże pliki, użycie metody read() , jak pokazano powyżej, może nie być zbyt wydajne.

W rzeczywistości, jeśli plik tekstowy ma bardzo duży rozmiar, wkrótce może zabraknąć pamięci. Dlatego możesz chcieć czytać tylko do odczytu wiersze z pliku tekstowego, a dowiesz się, jak to zrobić w tej sekcji.

Używanie metody readline() Pythona do odczytywania wierszy z pliku

Metoda readline() odczytuje z pliku jeden wiersz na raz.

Uruchom następujący fragment kodu.

 with open('lib.txt','r') as f: line = f.readline() print(line) line = f.readline() print(line) # Output Hello, there! Here are a few helpful Python libraries:

Widać, że po pierwszym wywołaniu metody readline() drukowany jest pierwszy wiersz pliku. Drugie wywołanie metody readline() zwraca drugi wiersz w pliku.

Dzieje się tak, ponieważ po pierwszym wywołaniu metody wskaźnik pliku znajduje się na początku drugiego wiersza.

W Pythonie możesz użyć metody tell() , aby uzyskać aktualną lokalizację wskaźnika pliku. Aby przenieść wskaźnik pliku do określonej lokalizacji, możesz użyć metody seek() .

W poniższym fragmencie kodu używamy f.seek(0) po pierwszym wywołaniu metody. Przenosi to wskaźnik pliku na początek pliku tekstowego. Dlatego w obu przypadkach drukowany jest pierwszy wiersz pliku.

 with open('lib.txt','r') as f: line = f.readline() print(line) f.seek(0) line = f.readline() print(line) # Output Hello, there! Hello, there!

Korzystanie z metody readlines() Pythona do odczytywania wierszy z pliku

Istnieje inna, ściśle powiązana metoda o nazwie readlines() .

Po uruchomieniu poniższego fragmentu kodu zobaczysz, że metoda readlines() zwraca listę wszystkich wierszy w pliku.

 with open('lib.txt','r') as f: lines = f.readlines() print(lines) # Output ['Hello, there!\n', 'Here are a few helpful Python libraries:\n', '1) NumPy\n', '2) pandas\n', '3) matplotlib\n', '4) seaborn\n', '5) scikit-learn\n', '6) BeautifulSoup\n', '7) Scrapy\n', '8) nltk\n', '9) Bokeh\n', '10) statsmodels\n', '\n']

Używanie Pythona dla pętli do czytania linii z pliku

Aby wczytać wiersze z pliku tekstowego, możesz również użyć pętli for .

Gdy masz już obiekt plikowy, możesz użyć pętli for do iteracji zawartości pliku — jeden wiersz po wierszu i wydrukowania ich, jak pokazano poniżej. Zauważ, że uzyskujemy dostęp tylko do jednej linii na raz i nie czytamy całej zawartości pliku.

 with open('lib.txt','r') as f: for line in f: print(line, end='')

Uwaga : Kiedy używasz funkcji print() Pythona, domyślnym separatorem jest znak nowej linii — znak '\n' . Ale w oryginalnym pliku nie mamy tych nowych linii. Ustaw więc argument separatora na pusty ciąg: end = '' , aby wyświetlić zawartość pliku w takiej postaci, w jakiej jest.

Jak czytać fragmenty treści z pliku w Pythonie?

W Pythonie możesz również wybrać czytanie zawartości pliku w postaci małych fragmentów.

Przeczytaj poniższy kod:

  • Tutaj ustawiamy chunk_size na 50 . Oznacza to, że zostanie wczytanych pierwszych 50 znaków z pliku, a także je wydrukujemy.
  • Teraz wywołaj metodę tell() na obiekcie pliku f . Widać, że wskaźnik pliku znajduje się teraz na pozycji 51 — co jest zgodne z oczekiwaniami.
 chunk_size = 50 with open('lib.txt','r') as f: chunk = f.read(chunk_size) print(chunk) current = f.tell() print(f"Current position of file pointer: {current}") # Output Hello, there! Here are a few helpful Python librar Current position of file pointer: 51

Możesz również użyć tej techniki, aby odczytać cały plik w postaci małych fragmentów.

Poniższy fragment kodu pokazuje, jak możesz to zrobić.

 chunk_size = 50 with open('lib.txt','r') as f: chunk = f.read(chunk_size) print(chunk,end='') while(len(chunk)>0): chunk = f.read(chunk_size) print(chunk,end='') # Output Hello, there! Here are a few helpful Python libraries: 1) NumPy 2) pandas 3) matplotlib 4) seaborn 5) scikit-learn 6) BeautifulSoup 7) Scrapy 8) nltk 9) Bokeh 10) statsmodels

Tutaj używamy pętli while do odczytania zawartości pliku. Odczytujemy zawartość pliku w kawałku o rozmiarze 50, aż dotrzemy do końca pliku.

Jak pisać do pliku w Pythonie

Aby pisać do pliku tekstowego w Pythonie, powinieneś otworzyć go w trybie zapisu — określając 'w' .

python-zapis-do-pliku

Poniższy fragment kodu pokazuje, jak to zrobić.

 with open('new_file.txt','w') as f: f.write('Hello, Python!')

Zobaczysz, że w twoim katalogu roboczym został utworzony 'new_file.txt' .

Teraz ponownie uruchom powyższą komórkę kodu.

W swoim terminalu uruchom następujące polecenie:

 cat new_file.txt # Output: Hello, Python!

W idealnym przypadku zapisaliśmy do pliku dwa razy. Hello, Python! powinien zostać wydrukowany dwukrotnie, tak?

Ale zobaczysz, że został wydrukowany tylko raz. Dzieje się tak dlatego, że kiedy otwierasz plik w trybie zapisu ( w ), zasadniczo nadpisujesz zawartość pliku nową zawartością.

Jeśli chcesz dodać na końcu pliku bez nadpisywania istniejącej zawartości, powinieneś otworzyć plik w trybie dołączania . Zobaczysz, jak to zrobić w następnej sekcji.

Jak dołączyć do pliku w Pythonie

Jeśli chcesz dołączyć zawartość do pliku — bez nadpisywania, otwórz go w trybie dołączania .

Aby to zrobić, użyj ` 'a'a for append — i wyraźnie określ tryb.

Następnie dwukrotnie uruchom następującą komórkę kodu.

 with open('new_file.txt','a') as f: f.write('Hello, Python!')

Zwróć uwagę, że tekst jest teraz drukowany dwukrotnie, gdy dołączyliśmy do pliku.

 cat new_file.txt # Output: Hello, Python!Hello, Python!

Wniosek

Podsumujmy szybko, co omówiliśmy w tym samouczku.

  • Poznałeś już typowe operacje wejścia/wyjścia na plikach, takie jak odczytywanie, zapisywanie i dołączanie do pliku.
  • Ponadto nauczyłeś się również, jak używać metody seek() do przeniesienia wskaźnika pliku do określonej pozycji i
  • jak używać metody tell() do pobrania aktualnej pozycji wskaźnika pliku.

Mam nadzieję, że ten samouczek okazał się pomocny. Teraz, gdy nauczyłeś się pracować z plikami tekstowymi w Pythonie, dowiedz się, jak pracować z plikami JSON w Pythonie.

Związane z:

Sprawdź długość listy w Pythonie w 3 krokach.