Ezzel a modullal egy olyan fájl objektumot hozhatsz létre, ami valójában a memóriában tárolódik. Minden műveletet, amit egy winchesteren lévÅ‘ fájllal megtehetsz, elvégezhetÅ‘ ezen az objektumon is. Használata a memória sebessége miatt ott érdemes, ahol kisméretű átmeneti fájlokat használnál, és a winchesterműveletek lelassÃtanák a program futását.
# File: stringIO_fajl_letrehozasa_memoriaban.py import StringIO szoveg = "Egy fekete felho az egbol...\n" # a fajlobjektum letrejott, es rogton belekerult a szoveg tartalma. file = StringIO.StringIO(szoveg) print file.read() # Egy fekete felho az egbol... file.write("gomolyog csendben az odunal") print file.getvalue() # a fajlobjektum aktualis tartalmat igy erheted el
# File: stringIO_fajl_letrehozasa_memoriaban.out Egy fekete felho az egbol... Egy fekete felho az egbol... gomolyog csendben az odunal
Tegyük fel, hogy egy műveletsorozatot végzünk el, melynek kimenetét (az esetleges hibaüzenetekkel együtt) csak akkor akarjuk megjelenÃteni, ha a műveletsorozat lefutott. Ekkor a kimenetet a memóriafájlba érdemes Ãrni, és ha szükséges, kiÃratható a szabványos kimenetre.
# File: stringIO_szabvanyos_kimenet_memoriaba_irasa.py import StringIO import string, sys # az eredeti szabvanyos kimenetre mutato hivatkozast eltaroljuk # stdout-ban. # a Pythonban nem valtozo ertekadas tortenik, hanem hivatkozasok masolasa objektumokra. # itt a stdout_eredeti_hivatkozas ugyanoda mutat (meg), mint a sys.stdout, amit kesobb megvaltoztatunk stdout_eredeti_hivatkozas = sys.stdout # a szabvanyos kimenet ezentul a memoriafajlra mutat. # vagyis minden, ami a kimenetre menne, a memoriafajlba kerul. sys.stdout = file = StringIO.StringIO() # --> memoriafajlba print-elunk. print """ Harom gyuru ragyogjon a tunde kiralyok kezen... """ sys.stdout = stdout_eredeti_hivatkozas # itt mar a valodi kimenetre kerul a szoveg print string.upper(file.getvalue())
# File: stringIO_szabvanyos_kimenet_memoriaba_irasa.out HAROM GYURU RAGYOGJON A TUNDE KIRALYOK KEZEN...
# File: stringIO_fajl_memoriaban_C_atirattal.py import cStringIO #Fontos: cStringIO-bol NEM lehet osztalyt szarmaztatni! szoveg = "Csuda egy pok ez a vizipok!" # file_objektum az uj fajlra mutat,ami rogton tartalmazni fogja szoveg erteket. file_objektum = cStringIO.StringIO(szoveg) print file_objektum.read()
# File: stringIO_fajl_memoriaban_C_atirattal.out Csuda egy pok ez a vizipok!
You must be logged in to post a comment.