Script nyelvek előadás - fájlkezelés - stringműveletek - importálás
Fájlműveletek - megnyitás f = open(fájlnév, mód) mód : 'r' --- csak olvasásra (ez a default), ha nincs ilyen fájl, hiba 'w' --- csak írásra (ha volt ilyen nevű fájl, akkor felülírja) 'a' --- hozzáfűzés céljából (ha nem létezik, létrehozza) 'r+' --- írásra és olvasásra, ha nincs ilyen fájl, hiba 'rb', 'wb', 'ab', 'r+b' --- ugyanez bináris fájlra (Windows/MAC eseten lényeges)
Fájlműveletek - beolvasás / f=open("adatok.txt", 'r') / - f.read(3) -- paraméterben megadott byte-ot olvas - f.read() -- teljes fájl beolvasása (az olvasási pozíciótól), ha már elértük a fájl végét üres karakterláncot ad - f.readline() -- egy sor beolvasása - f.readlines() -- az összes további sor beolvasása tömb az eredmény, elemek végén ”\n” van
Fájlműveletek - feldolgozás - a fájl objektum iterálható: f = open("adatok.txt", 'r') for line in f : print line, - lezárás - f.close() -- felszabadítja a fájlhoz kötött erőforrásokat
Fájlműveletek Megjegyzés: str() -- karaktersorozattá konvertálás - kiírás f = open("eredmeny.txt", 'w') - f.write("Szoveg\n") - csak karaktersorozatot ír ki - nincs automatikus konverzió - nincs automatikus újsor karakter Megjegyzés: str() -- karaktersorozattá konvertálás
Fájlműveletek - léptetés f=open("tmp.txt", 'r') - f.seek(2) -- adott sorszámú byte-ra ugrik - f.seek(3,0) -- adott byte-ot ugrik, a fájl elejéről (ez a default) - f.seek(2,1) -- adott byte-ot ugrik, aktuális pozíciótól - f.seek(-3,2) -- adott byte-ot ugrik, a fájl végétől - f.tell() -- aktuális pozíció
Karaktersorozatok további műveletei s = "karaKTer sORozat" - s.capitalize() == 'Karakter sorozat' - s.lower() == 'karakter sorozat' - s.upper() == 'KARAKTER SOROZAT' - s.swapcase() == 'KARAktER SorOZAT'
Immutable vs Mutable s = "peLDa" - s.upper() == 'PELDA' - s == "peLDa" - l.sort() == None - l == [2,4,5]
Karaktersorozatok további műveletei r = "ritkán rikkant a rigó" - r.count("ri") == 3 - r.count("ri",0,5) == 1 - r.count("ri",0,10) == 2 Megjegyzés: ékezetes betűk r = "ritkán rikkant a rigó" - r[0:5] == 'ritk\xc3' - r[0:10] == 'ritk\xc3\xa1n ri' - 'á' == '\xc3\xa1' # két karakter
Karaktersorozatok további műveletei r = "ritkán rikkant a rigó" - r.endswith("gó") == True - r.endswith(("ri","gó","án")) == True - r.endswith(("ri","gó","án"),0,10) == True - r.endswith(("ri","gó","án"),0,5) == False - r.startswith(("ri","gó","án"),4,10) == True
Karaktersorozatok további műveletei - "alma\tfa".expandtabs(4) == "alma fa" - "almafa".find("fa") == 4 - "almafa".find("korte") == -1 - "abrakadabra".rfind("ra") == 9 - "abrakadabra".rfind("fa") == -1
Karaktersorozatok további műveletei - "\t \n".isspace() == True - "0123456789".isdigit() == True - "12 34 56".isdigit() == False
Karaktersorozatok további műveletei Példaprogramok - stringprog1.py - stringprog2.py - stringprog3.py
Karaktersorozatok további műveletei - ";".join("minta") == 'm;i;n;t;a' - "; ".join(["Pal", "Kata", "Peter"]) == 'Pal; Kata; Peter' - "\t\t\n szoveg \t\n".lstrip() == 'szoveg \t\n' - "\t\t\n szoveg \t\n".rstrip() == '\t\t\n szoveg' - "\t\t\n szoveg \t\n".strip() == 'szoveg' - "alma*.tx*".rstrip("*tx") == 'alma*.' - "indul aludni".strip("in") == 'dul alud'
Karaktersorozatok további műveletei - 'almafa kortefa barackfa'.partition("fa") == ('alma', 'fa', ' kortefa barackfa') - 'almafa kortefa barackfa'.partition("level") == ('almafa kortefa barackfa', '', '') - 'almafa kortefa barackfa'.rpartition("fa") == ('almafa kortefa barack', 'fa', '') - 'Pal; Kata; Peter'.replace("; ", " es ") == 'Pal es Kata es Peter' - 'Pal; Kata; Peter'.replace("; ", "::", 1) == 'Pal::Kata; Peter'
Karaktersorozatok további műveletei - 'Pal\n Kata\t Peter Balazs'.split() == ['Pal', 'Kata', 'Peter', 'Balazs'] - 'Pal; Kata; Peter'.split("; ") == ['Pal', 'Kata', 'Peter'] - 'Pal;Kata;Peter;;Balazs'.split(";") == ['Pal', 'Kata', 'Peter', '', 'Balazs'] - "".split() == [] - "".split(";") == [''] - 'Pal; Kata; Peter'.split("; ",1) == ['Pal', 'Kata; Peter'] - 'Pal Kata Peter'.split(None,1) == ['Pal', 'Kata Peter'] - 'Pal; Kata; Peter'.rsplit("; ",1) == ['Pal; Kata', 'Peter'] - 'Pal Kata Peter'.rsplit(None,1) == ['Pal Kata', 'Peter']
Karaktersorozatok további műveletei - 'Pal\n Kata\n Peter\n'.splitlines() == ['Pal', ' Kata', ' Peter'] - 'Pal\n Kata\n Peter\n'.splitlines(True) == ['Pal\n', ' Kata\n', ' Peter\n'] import string - "indul a".translate(string.maketrans("adilnu","iuanld"), " ") == 'aludni' -"indul a".translate(None, "a ") == 'indul'
Karaktersorozatok további műveletei Példaprogram - stringprog4.py
Karaktersorozatok további műveletei Formázás s = "pozicio" - s.center(15,"-") == '----pozicio----' - s.center(15) == ' pozicio ' - s.ljust(15,"-") == 'pozicio--------' - s.rjust(15,"-") == '--------pozicio'
Karaktersorozatok további műveletei Formázás - "%3d %-3d" %(1, 2) == ' 1 2 ' - "%3d %-3d" %(10, 20) == ' 10 20 ' - "Float:%8.3f" %(6.98767654) == 'Float: 6.988' # összesen 8 karakterre igazít, ponttal együtt t = {'Pal': 20, 'Peter': 19, 'Kata': 18} - "1: %(Pal)5d pont, 2: %(Peter)d pont, 3: %(Kata)d pont" %t == '1: 20 pont, 2: 19 pont, 3: 18 pont'
Karaktersorozatok további műveletei Formázás - "{0:4d} {1:<4d} {2:^4d}".format(10,20,30) == ' 10 20 30 ' t = {'Pal': 20, 'Peter': 15, 'Kata': 12}, t2 = {'Judit': 10, 'Mikos': 8} - "1: {0[Pal]:5d} pont, 3: {0[Kata]:d} pont, 4: {1[Judit]:d} pont".format(t,t2) == '1: 20 pont, 3: 12 pont, 4: 10 pont' - "1: {Pal:5d} pont, 2: {Peter:d} pont, 3: {Kata:d} pont".format(**t) == '1: 20 pont, 2: 15 pont, 3: 12 pont' - s = "1: {Pal:5d} pont, 2: {Peter:d} pont, 3: {Kata:d} pont" s.format(Pal=20,Peter=15, Kata=12)
Karaktersorozatok további műveletei Használat - for x in range(2,5) : ... print "{0:2d} {1:<2d} {2:^3d}".format(x, 3*x, x**x) 2 6 4 3 9 27 4 12 256 Megjegyzés: beolvasás x = input() x = raw_input() # érték beolvasás # string beolvasás x + 4
Importálás más fájlokból - import modulnév - változó hozzárendelések, függvény definíciók + végrehajtható kód - elérés: modulnév.függvénynév() - from modulnév import függvénynév, változónév - az adott változó hozzárendelés, függvény definíció + végrehajtható kód - elérés: függvénynév() - from modulnév import * - az "_"-al kezdődőeken kívül minden változó hozzárendelés, függvény definíció + végrehajtható kód
Importálás más fájlokból Példaprogramok - imp1.py, ..., imp3.py