Að vinna með skrár
Það gætu komið upp þær aðstæður að við þurfum að geta lesið gögn sem eru geymd í skrám. Ef við værum til dæmis að skrifa forrit fyrir Hengimann leikinn þá gæti verið þægilegra að lesa inn orðin úr skrá frekar en að búa þau öll til í forritinu sjálfu.
Í þessum kafla verður farið yfir nokkur atriði sem gera okkur kleift að vinna með textaskrár.
Til þess að geta lesið gögnin þá þurfum við að opna skránna en það gerum við með fallinu open()
. Fallið skilar af sér breytu sem við getum notað til þess að lesa innihald skráarinnar og fallið tekur inn slóð skráarinnar ásamt inntaksgildið mode. Mode segir til um í hvaða ham skráin opnast, þ.e. hvað við viljum gera við skránna. Athugið að í dæmunum hér að neðan munum við vinna með skrár á sama stað og Python er staðsett og því þurfum við ekki að tilgreina staðsetningu sérstaklega.
Í dæminu hér að ofan notuðum við haminn 'r'
en hann segir open()
fallinu að við viljum eingöngu lesa skránna (e. read). Við getum því sagt að við höfum opnað skránna í lesham. Við notuðum síðan for-lykkju til þess að prenta innihald skráarinnar á skjáinn.
Við getum líka sótt eina línu í einu:
Þarna gerðist eitthvað skrítið. Þegar við prentuðum skránna áðan þá var fyrsta línan "Ég bið að heilsa!" en þegar kölluðum á eina línu án þess að nota print()
fallið þá bættist við \n
. Þetta tákn (\n
) þýðir „ný lína“ og er það sem við köllum falið tákn. Táknið verður alltaf til þegar við ýtum á Enter-takkann á lyklaborðinu en flestir ritlar fela þetta tákn. Skipunin readline()
sýnir okkur táknið því við notuðum það í skelinni án þess að færa skilagildið undir breytu.
Skoðum næst alla möguleikana sem við höfum þegar við notum fallið open()
.
Tákn
Hamur (e. mode)
'r'
Opna skrá í lesham
'w'
Opna skrá í skrifham
'x'
Búa til skrá ef hún er ekki til
'a'
Opna skrá, ef hún er til, til þess að skrifa aftast í hana
'b'
Tvíundarhamur
't'
Textahamur (sjálfgefinn hamur)
'+'
Opna skrá í les- og skrifham
Skoðum nokkur dæmi um hvernig við getum notað fallið.
Þegar við notuðum 'w'
þá sjáum við að Python skrifaði yfir allt í skránni með nýja textanum. Ef við viljum eingöngu bæta við skránna þá notum við 'a'
:
Nú sjáum við að við skrifuðum ekki yfir allt sem var í skránni en þar sem við gleymdum að setja inn línuskil í línurnar þá komu nýju línurnar inn í sömu línu.
Ef við viljum búa til nýja skrá þá getum við notað 'x'
-haminn:
Við verðum að passa að það má ekki vera til skrá með sama heiti á sama stað og við ætlum að búa til nýja skrá:
'+'
hamurinn getur verið gagnlegur þegar við viljum gera meira en einn hlut í einu. Segjum sem svo að við viljum opna skrá, prenta allar línurnar og síðan setja línu neðst:
Ef við viljum setja línu fremst í skránna þá getum við gert það svona :
Síðustu tvö dæmin sýna okkur að þegar við notum 'r+'
-haminn þá opnast skráinn í fyrstu línu og allt sem skrifum inn í skránna fer fremst í skránna. Við getum síðan notað lykkju til þess að færa okkur neðst í skránna og síðan skrifa inn nýja línu þar.
Last updated