Файлдармен жұмыс
Программаң жұмысын тоқтатқанда, пернетақтадан енгізген барлық дерек жоғалып кетеді екенін байқадың ба? Ал ойын progресіңді сақтау немесе үлкен көлемдегі деректі бір рет жазып, талай рет қайта пайдалану керек болса ше? Дәл осы үшін файлдармен жұмыс істеу керек. Бүгін Python-да файлды ашу, оқу, жазу және дұрыс жабудың жолын үйренеміз.
Python-да файлдың екі түрі бар: мәтіндік файл (жолдарға бөлінген мәтін) және екілік файл (сурет, дыбыс — кез келген форматтағы деректер). Файлмен жұмыс әрдайым үш кезеңнен тұрады: ашу → жұмыс істеу → жабу.
open(атауы, режим) — файлды ашады. Негізгі режимдер:
'r' — оқу (әдепкі), 'w' — жазу (файл мазмұны ТАЗАЛАНАДЫ), 'a' — соңына қосу (append).
fin = open('file1.txt', 'r')
fout = open('file2.txt', 'w')
fapp = open('file3.txt', 'a')
# Жұмыс аяқталған соң жабу міндетті:
fin.close()
fout.close() Файл объектісінің өз атрибуттары бар: file.name (аты), file.mode (ашылу режимі), file.closed (жабық болса True).
Файлдан оқудың үш негізгі әдісі бар — олардың айырмашылығы, қанша оқитынында:
| Әдіс | Не оқиды |
|---|---|
read() | Барлық мазмұнды бір реттен (немесе read(n) — n символ/байт) |
readline() | ТЕК бір жолды |
readlines() | Барлық жолдарды тізім түрінде |
read() пен readline() БОС ЖОЛ қайтарады — бұл файлдың аяқталғанын тексеру үшін қолданылады.Файл объектісі итерацияланатын (циклмен өтуге болатын) объект болғандықтан, оны тікелей циклде де оқуға болады:
for i in open('text.txt'):
print(i) Оқылған жолды бөліктерге бөлу керек болса, таныс split() әдісі көмекке келеді: my_file.readline().split() → ['one', '-', '1', '-', 'I'].
Файлды ашып, кейін жабуды ҰМЫТЫП КЕТУ — жиі кездесетін қате. Мұны болдырмайтын арнайы конструкция бар:
with — файлды автоматты түрде ашады және блок аяқталған соң ӨЗІ жабады, қолмен
close() шақырудың қажеті жоқ.
with open('text.txt') as my_file:
for line in my_file:
print(line) Берілді: data.txt мәтіндік файлы.
with open('data.txt') as file:
text = file.read()
text = text.replace(".", "").replace(",", "")
words = text.split()
print(len(words)) Түсіндірме: replace() тыныс белгілерін жояды (сөздер тек бос орынмен ажыратылатындай), содан кейін split() мәтінді сөздерге бөледі, len() санын береді.
write() — файлға жазады, жазылған символдар санын қайтарады.
write() жол соңына '\n' ҚОСПАЙДЫ — жаңа жолға өтуді өзің жазуың керек.
Берілді: input.txt файлында a=5, b=6 сандары бөлек жолда.
f = open('input.txt', "r")
a = int(f.readline())
b = int(f.readline())
h = open('output.txt', "w")
h.write(str(a + b))
f.close()
h.close() Жауабы: output.txt файлында — 11.
Ал файлдық операциялар (ашу, оқу) — қателердің ықтимал көзі (файл табылмауы, диск толуы). Сенімді программа мұны try/except арқылы тексереді:
Берілді: file.txt файлында бос орынмен ажыратылған нақты сандар бір жолда.
s = 0
try:
with open('file.txt') as my_file:
numbers = my_file.readline().split()
for i in numbers:
s += float(i)
print('sum=%.2f' % s)
except:
print('Error opening file') Жауабы: файлда 0.95 0.47 0.67 болса — sum=2.09.
write() жаңа жол таңбасын автоматты қоспайды.with қолданғанда файлды қолмен жабудың қажеті жоқ — ол автоматты орындалады.- Файлмен жұмыс: ашу (
open()) → жұмыс істеу → жабу (close()). - Режимдер: 'r' (оқу), 'w' (жазу, тазалап), 'a' (соңына қосу).
read(),readline(),readlines()— оқу әдістері;write()— жазу әдісі.withоператоры файлды автоматты жабады;try/exceptфайлдық қателерден қорғайды.