Pythonilla (kuten useimmilla muillakin ohjelmointikielillä) voidaan käsitellä tiedostoja. Tiedosto avataan ennen kuin se voidaan lukea tai kirjoittaa. Tiedosto voidaan tuhota avaamatta sitä ensin.
Tiedosto avataan open()-funktiolla:
open(file, 'm', [...])
jossa
open()-funktio avaa tiedoston ja palauttaa ns. tiedostokahvan (file handle) eli viittauksen avattuun tiedostoon. Tiedostokahva talletetaan yleensä muuttujaan, jota käytetään tiedostoa käsitellessä.
Tiedoston sisältö saadaan luettua read()-funktiolla.
datafile = open("crash_catalonia.csv") # Avataan tekstitiedosto crash_catalonia.csv print(datafile.read()) # Tulostetaan tiedoston sisältö näytölleTulostaa: "Day of Week", "Number of Crashes" "Sunday", 13664 "Monday", 17279 "Tuesday", 17337 "Wednesday", 17394 "Thursday", 17954 "Friday", 19147
Pythonissa on oma kirjastonsa csv-tiedostojen käsittelyyn. Kirjasto otetaan käyttöön käskyllä import.
import csv
csv-kirjastossa on useita metodeja, joista reader() lukee avatun csv-tiedoston.
import csv datatiedosto = open("crash_catalonia.csv") # Avataan tekstitiedosto crash_catalonia.csv data = csv.reader(datatiedosto) # Luetaan tiedoston sisältö csv-muotoisena for rivi in data: # Käydään yksitellen läpi csv-tiedoston rivit print(rivi) # Tulostetaan kukin rivi näytölleTulostaa: ["Day of Week", "Number of Crashes"] ["Sunday", 13664] ["Monday", 17279] ["Tuesday", 17337] ["Wednesday", 17394] ["Thursday", 17954] ["Friday", 19147]
import csv datatiedosto = open("csv\crash_catalonia.csv") datarivit = csv.reader(datatiedosto) for datarivi in datarivit: # Käydään läpi kaikki rivit print(datarivi[1]) # Tulostetaan kunkin rivin listan toinen jäsen -
# ensimmäinen tulostuisi indeksillä 0
import csv datafile = open("csv\crash_catalonia.csv") datarivit = csv.reader(datafile) for datarivi in datarivit: try: # Kokeillaan, josko onnistuisi hakea numero print(datarivi[1]) # toisesta sarakkeesta (eli indeksin arvolla 1) # Jos numeron haussa tulee ongelmia, hypätään # ongelman mukaiseen except-kohtaan except IndexError: # Tyhjällä rivillä tulee ongelmia indeksin print("Indeksiongelma!") # kanssa, joten tulostetaan ongelmasta continue # tieto ja jatketaan for-luuppia except ValueError: # Otsikkorivillä tulee ongelmia, kun print("Numero-ongelma!") # riviltä ei löydykään numeroita. Tulostetaan continue # ongelmasta tieto ja jatketaan for-luuppia
import csv datatiedosto = open("csv\crash_catalonia.csv") datarivit = csv.reader(datatiedosto) rivi = 1 # Perustetaan rivilaskuri ja asetetaan se osoittamaan # ensimmäiselle riville for datarivi in datarivit: # Käydään läpi kaikki rivit if rivi > 1: # Muut kuin 1. rivi print(datarivi[1]) # tulostetaan rivi += 1 # Muista kasvattaa rivilaskuria!
import csv datatiedosto = open("csv\crash_catalonia.csv") datarivit = csv.reader(datatiedosto) eka_rivi = True # Käsitellään ensiksi eka rivi for datarivi in datarivit: # Käydään läpi kaikki rivit if not eka_rivi: # Muut kuin 1. rivi print(datarivi[1]) # tulostetaan eka_rivi = False # Muista asettaa eka_rivi-muuttuja # arvoon False!
Kolarilukuja oli 7 ja niiden keskiarvo on kahden desimaalin tarkkuudella 16927.00.
tulostus = "Pituus: {:.0f} cm Paino {:.1f} kg" print(tulostus.format(pituus_cm, paino_kg))
import csv datafile =open ("csv/hw_small.csv" ) rivit = csv.reader(datafile) indeksiongelmia = 0 pituussumma, painosumma, n = 0.0, 0.0, 0 tuumista_senteiksi = 2.54 paunoista_kiloiksi = 0.453592 eka_rivi =True for riviin rivit:if not eka_rivi:# Ekalla rivillä on vain otsikot try :# Laske pituus senteissä ja summaa: pituus_cm =float (rivi[1]) * tuumista_senteiksi pituussumma += pituus_cm# Laske paino kiloissa ja summaa paino_kg =float (rivi[2]) * paunoista_kiloiksi painosumma += paino_kg# Tulosta molemmat tulostus ="Pituus: {:.0f} cm Paino: {:.1f} kg" except IndexError : indeksiongelmia += 1 eka_rivi =False tulostus ="Pituuden keskiarvo on {pituus_ka:.0f} cm " \"ja painon {paino_ka:.1f} kg." if indeksiongelmia > 0: tulostus ="Indeksiongelmia oli {}" else : tulostus ="Ei indeksiongelmia!"
Alkuperäiset tiedostot: © John Burkardt, Florida State University, Department of Scientific Computing, distributed under the GNU LPGL license.