13.1 Otwieranie plików i obiektów typu file

with open('mój_plik', 'r') as obiekt_pliku:
  linia = obiekt_pliku.readline()


import os
nazwa_pliku = os.path.join('C:', 'Moje Dokumenty', 'test', 'mój_plik.txt')
obiekt_pliku = open(nazwa_pliku, 'r')

13.2 Zamykanie plików

obiekt_pliku = open(nazwa_pliku, 'r')
linia = obiekt_pliku.readline()
# … kolejne operacje czytania z pliku
obiekt_pliku.close()



with open('mój_plik.txt', 'r') as obiekt_pliku:
  linia = obiekt_pliku.readline()
  # … kolejne operacje czytania z pliku

13.3 Otwieranie plików w różnych trybach

obiekt_pliku = open('mój_plik.txt', 'w')
obiekt_pliku.write("Witaj, świecie\n')
obiekt_pliku.close()

13.4 Funkcje do czytania i pisania danych tekstowych lub binarnych

obiekt_pliku = open('mój_plik.txt', 'r')
licznik = 0
while obiekt_pliku.readline() != "":
  licznik = licznik + 1
print(licznik)
obiekt_pliku.close()


obiekt_pliku = open('mój_plik.txt', 'r')
print(len(obiekt_pliku.readlines()))
obiekt_pliku.close()


obiekt_pliku = open('mój_plik.txt', 'r')
licznik = 0
for linia in obiekt_pliku:
  licznik = licznik + 1
print(licznik)
obiekt_pliku.close()

plik_wejściowy = open('mój_plik.txt', 'rb')
nagłówek = plik_wejściowy.read(4)
dane = plik_wejściowy.read()
plik_wejściowy.close()


plik_wejściowy = open('mój_plik.txt', 'r')
linie = plik_wejściowy.readlines()
plik_wejściowy.close()
plik_wyjściowy = open('mój_plik2.txt', 'w')
plik_wyjściowy.writelines(linie)
plik_wyjściowy.close()

13.4.1 Używanie trybu binarnego

plik_wejściowy = open('mój_plik.txt', 'rb')
nagłówek = plik_wejściowy.read(4)
dane = plik_wejściowy.read()
plik_wejściowy.close()


13.5 Czytanie i pisanie przy pomocy pathlib

>>> from pathlib import Path
>>> p_tekstowy = Path("mój_plik_tekstowy.txt")
>>> p_tekstowy.write_text("Zawartość pliku tekstowego")
26
>>> p_tekstowy.read_text()
'Zawartość pliku tekstowego'
>>> p_binarny = Path("mój_plik_binarny.jpg")
>>> p_binarny.write_bytes(b'Zawartość pliku binarnego')
25
>>> p_binarny.read_bytes()
b'Zawartość pliku binarnego'


13.6 Operacje wejścia/wyjścia i przekierowania

>>> x = input("Wpisz nazwę pliku do wykorzystania: ")
Wpisz nazwę pliku do wykorzystania: mój_plik.txt
>>> x
'mój_plik.txt'


>>> z = int(input('Wpisz swój numer: '))
Wpisz swój numer 39
>>> x
39


>>> import sys
>>> print("Pisz na standardowe wyjście.")
'Pisz na standardowe wyjście.'
sys.stdout.write("Pisz na standardowe wyjście.\n")
'Pisz na standardowe wyjście.'
27                                                       #A
>>> s = sys.stdin.readline()
Linia treści od użytkownika
>>> s
'Linia treści od użytkownika\n'


>>> import sys
>>> p = open("plik_wyjściowy.txt", "w")
>>> sys.stdout = p
>>> sys.stdout.writelines(["Pierwsza linia\n", "Druga linia\n"]) #A
>>> print("Linia pochodząca z funkcji print")
>>> 3 + 4                                           #B
>>> sys.stdout = sys.__stdout__
>>> p.close()
>>> 3 + 4
7


>>> import sys
>>> p = open("plik_wyjściowy.txt", "w")
>>> print("Pierwsza linia.\n", "Druga linia.\n", file=p)   #A
>>> 3 + 4
7
>>> p.close()
>>> 3 + 4
7

13.7 Przekierowanie binarnych struktur danych i moduł struct

import struct
format_rekordu = 'hd4s'
rozmiar_rekordu = struct.calcsize(format_rekordu)
lista_wyników = []
wejście = open('data.binary', 'rb')
while 1:
  rekord = wejście.read(rozmiar_rekordu)                    #A
    if rekord == '':                                    #1
        wejście.close()
        break
    lista_wyników.append(struct.unpack(format_rekordu, rekord))    #B

>>> import struct
>>> format_rekordu = "hd4s"
>>> struct.pack(format_rekordu, 7, 3.14, b'gbye')
b'\x07\x00\x00\x00\x00\x00\x00\x00\x1f\x85\xebQ\xb8\x1e\t@gbye'

13.8 Serializacja obiektów do plików

import pickle
.
.
.
plik = open("stan.dump", "wb")
pickle.dump(a, plik)
pickle.dump(b, plik)
pickle.dump(c, plik)
plik.close()

import pickle
plik = open("stan.dump", "rb")
a = pickle.load(a, plik)
b = pickle.load(b, plik)
c = pickle.load(c, plik)
plik.close()


import pickle
.
.
.
def zapisz_dane():
  global a, b, c
  plik = open("stan.dump", "wb")
  dane = {"a": a, "b": b, "c": c}
  pickle.dump(dane, plik)
  plik.close()
  
def odzyskaj_dane():
  global a, b, c
  plik = open("stan.dump", "rb")
  dane = pickle.load(plik)
  plik.close()
  a = dane["a"]
  b = dane["b"]
  c = dane["c"]
.
.


>>> import pickle
>>> plik = open("mozolnie.dump", "wb")
>>> pickle.dump({}, plik)
>>> plik.close()

13.9 Magazynowanie obiektów przy użyciu modułu shelve

>>> import shelve 
>>> ksiazka = shelve.open("adresy.tel")

>>> ksiazka['kiepski'] = ('ferdynand', '555-1234', 'Cwiartki 3')
>>> ksiazka['pazdzioch'] = ('marian', '555-4321', 'Cwiartki 3')
 


>>> ksiazka.close()

>>> import shelve
>>> ksiazka = shelve.open("adresy.tel")


>>> ksiazka['kiepski']
('ferdynand', '555-1234', 'Cwiartki 3')


