Python/Tiedosto
Wikikirjasto
< Python
[muokkaa] Tiedostojen vertailu
Esimerkeissä käytetään kahta tekstitiedostoa, joissa on useita lyhyitä rivejä. Tiedostoissa voi olla vaikka wikilinkkejä:
- [[linkki]]
- [[Linkki]]
# Avataan tiedosto f1.txt lukemista varten f1 = open('f1.txt', 'r') # Luetaan koko tiedosto merkkijonoksi s1 s1 = f1.read() # Suljetaan tiedosto f1 - tiedosto voidaan sulkea heti kun se on luettu f1.close() # Tehdään samat kuin yllä f2 = open('f2.txt', 'r') s2 = f2.read() f2.close()
Nyt tiedostojen sisällöt ovat muuttujien s1 ja s2 takana merkkijonoina.
[muokkaa] Poistetut rivit
Tarkoituksena on katsoa, mitkä rivit puuttuvat tiedostosta f2.txt mutta ovat tiedostossa f1.txt.
# Käytetään merkkijonoon split-funktiota, joka pätkii tekstin rivinvaihtojen (\n) kohdilta listaksi. l1 = s1.split('\n') l2 = s2.split('\n') # Käydään l1-lista läpi alkio (i) kerrallaan. for i in l1: # Jos i ei ole listassa l2 se tulostetaan ruudulle if i not in l2: print i
Harjoituksia:
- Muokkaa yllä oleva näyttämään lisätyt rivit.
- Tai muokkaa se sellaiseksi, ettei kirjainkoolla ole väliä (linkki ja Linkki olisivat sama).
[muokkaa] Difflib
Pythonin kirjastoon kuuluu difflib.py, jolla voi helposti vertailla kahta tiedostoa. Katsotaan, mitkä rivit on lisätty tiedostoon tai poistettu tiedostosta f2.txt.
# Tyhjä lista l = [] # Muutetaan muuttujien nimet newtext = s1 oldtext = s2 # Lähetetään difflibin ndiff-luokkaan oldtext ja newtext pätkittynä listoiksi. # Käydään ndiffin palauttama merkkijono läpi rivi (line) kerrallaan. for line in difflib.ndiff(oldtext.splitlines(), newtext.splitlines()): # Takaisin tulleessa merkkijonossa lisäyksien eteen on lisätty plus ja poistojen miinus. # Tarvitsemme vain muutetut rivit eli rivit jotka alkavat em. merkeillä. if line[0] in ('+', '-'): # Lisätään line listaan l l.append(line) # Yhdistetään lista rivinvaihdoilla diff = '\r\n'.join(l) # Tulostetaan merkkijono diff print diff
[muokkaa] Aiheesta muualla
- Python-kielisen_ohjelmoinnin_perusteet (Wikiopiston opintopiirin opiskeluohjeita)
| Johdanto: | |
|---|---|
| Tietotyypit ja tietorakenteet: |
Luvut - Merkkijonot - Lista - Monikko (tuple) - Sanakirja - Joukko (set) |
| Ohjausrakenteet | |
| Muut kielen rakenteet: | |
| Graafinen käyttöliittymä: | |
| Harjoitustehtäviä: | |
| Lisätiedot ja lähteet: |