You are on page 1of 75

Лекція

«Роботи з файлами. Бібліотеки за


умовчанням»
Метод write(str) –

використовується для запису даних у файл.


Режими запису – w(перезапис) та a(дозапис)
2
Метод print() для запису даних у
файл (не в консоль)
Мод «r» - для зчитування даних з файлу

readline() 1 рядок 1 рядок

read() Всі рядки 1 рядок

readlines() Вся рядки список


Викликає readline() автоматично
Якщо файл невеликий ..
Можливе виключення: не співпадання
кодування, н-д: ASCII – Utf8
encoding = “”
*.csv (Comma Separated Values) –
текстовий формат, як правило, для
табличних даних. Можна працювати
за допомогою MS Excel.

Відкриті дані для досліджень:


The 50 Best Public Datasets for Machin
e Learning Open Datasets
Користувався особисто:
Kaggle.com
Як дивитись/редагувати на dataset
https://public.enigma.com/
Далі – MS Excel (2016)
Завдання по матеріалу: завантажте
по посиланню датасет повних
метрик даних про коронавірус по
посиланню: відкрийте та
ознайомтесь з ним.
https://ourworldindata.org/coronavir
us-source-data
newline=“” – коректне зчитування файлів

csv.writer(“path”) – об’єкт, який завідує записом у файли

writer.writerows(“data”) – запис кількох рядків


writer.writerow(“data”) – запис одного рядка
csv.reader(“path”) – об’єкт, який завідує зчитуванням файлу

Построкове зчитування файлу


Зчитування через цикл – єдиний метод
зчитування. Перевірити це просто!
Бінарні файли – зберігають файли у
вигляді байтів. Розширення: .dat
Використовуються для збереження
медіа та просто текстової інформації

Важко читаються необізнаним


користувачем..
“wb” – модифікатор запису
pickle.dump(“text”, “path”) – запис даних у
файл

“rb” – модифікатор зчитування


pickle.load(“path”) – зчитування даних з
файлу
Серіалізація – процес швидкого
збереження/завантаження даних у
стандартизованому вигляді у
байтовому форматі.

Н-д: save\load у комп’ютерних іграх.

В Python відсутня окрема функція


серіалізації. Частіше використовують
або біліотеку pickle або shelve.
Модуль shelve використовується для роботи з
бінарним файлом по принципу словника ключ-
значення.
open(шлях_до_файлу[, flag="c"])
Flags:
c – для читання та дозапису. Файл
створюється. (по замовчанню)
r –для читання;
w – для запису. Файл не створюється;
n – для перезапису. Файл створюється.
«файл».close()
Для встановлення значень:
файл[ключ] = значення

Для повернення значень:


файл[ключ]
Якщо ключ не існує, то отримаємо
виключення при читанні. Тому можна
перевірити код за допомогою конструкції
if … in …
(працює не тільки у shelve)
Перебор значень – за допомогою
цикла for
метод items() повертає кортежі
{ключ, значення}
Метод keys () повертає всі ключі з
файлу, а метод values () - всі значення
Для зміни даних досить надати ключу нове
значення, а для додавання даних -
визначити новий ключ

Для видалення всіх! Елементів


використовується метод clear()
Для видалення з одночасним поверненням
можна використовувати функцію pop (), в яку
передається ключ елемента і значення за
замовчуванням, якщо ключ не знайдений

Також для видалення може


застосовуватися оператор del:
Завдання по матеріалу:
Створіть клас героя для RPG-гри. У нього
повинні бути характеристики (ім’я, HP,
AC, STR, DEX і т.д.) та інвентар з
предметами в ньому (можуть бути
просто назви, або повноцінні об’єкти з
описом (у вигляді екземплярів класів)).
Найдайте йому методи save та load.
Відповідно, перший буде сереалізувати
його характеристики, а другий –
десереалізувати.
Роботу з каталогами та файлами
надає вбудований модуль os.
Основні функції:

mkdir(«шлях»): створює нову папку


rmdir(«шлях»): видаляє папку
rename(«шлях», «шлях»):
перейменовує файл
remove(«шлях»): видаляє файл
2

Навіщо так робити?


os.path.exists(filename) – повертає
True/False, якщо файл існує.
Без цього Python створить
виключення FileNotFoundError.
Завдання по матеріалу:
Продемонструйте роботу
зазначених методів бібліотеки os.
Дізнайтесь, будь-ласка, як тут
можуть використовуватись т.з.
«сирі» текстові змінні («сырые
строки»).
Вбудований модуль random.
Функція random генерує від 0.0 до 1.0
Функція randint(min,max).
Функція randrange(start, stop, step).
Функція shuffle () перемішує список,
функція choice () повертає один випадковий
елемент зі списку
Вбудований модуль math в Python надає набір
функцій для виконання математичних,
тригонометричних і логарифмічних операцій
Вбудовані константи PI та E:
pow (num, power): зведення числа num в ступінь power
sqrt (num): квадратний корінь числа num
ceil (num): округлення числа до найближчого
найбільшого цілого
floor (num): округлення числа до найближчого
найменшого цілого
factorial (num): факторіал числа
degrees (rad): переклад з радіан в градуси
radians (grad): переклад з градусів в радіани
cos (rad): косинус кута в радіанах
sin (rad): синус кута в радіанах
tan (rad): тангенс кута в радіанах
acos (rad): арккосинус кута в радіанах
asin (rad): арксинус кута в радіанах
atan (rad): арктангенс кута в радіанах
log (n, base): логарифм числа n по підставі base
log10 (n): десятковий логарифм числа n
Функція round(number[, digits])
Модуль Decimal – точні обчислення
Decimal використовується лише з цілими
числами..
Також, можна виставити точність:
Decimal також можна округляти

«число».quantize(«точність»[,
константа])
time date

Робота з датами і часом


datetime

datetime timedelta
date(year, month, day)

time([hour] [, min] [, sec] [, microsec])


метод date.today()
datetime(year, month, day [, hour [, min
[, sec [, microsec]]]])
datetime.now() 2
strptime(str, format)
конвертація з текстового формату в дату

%d: день місяця у вигляді числа


%m: порядковий номер місяця
%y: рік у вигляді 2-х чисел
%Y: рік у вигляді 4-х чисел
%H: годину в 24-х годинному форматі
%M: хвилина
% S: секунда
Для визначення проміжку часу можна
використовувати клас timedelta
timedelta([days[, seconds[, microseconds
[, milliseconds [, minutes [, hours [, weeks]]]]]]])
Час можна додавати

або віднімати
Клас timedelta має властивості, які
повертають часовий проміжок:

days: повертає кількість днів


seconds: повертає кількість секунд
microseconds: повертає кількість
мікросекунд

Метод total_seconds () повертає


загальну кількість секунд.
Порівняння дат:
Завдання по матеріалу:
1. Розрахуйте дату свого народження та свій вік
(від сьогодні) так, як його рахує комп’ютер (у
мілісекундах). Використайте відповідні
бібліотеки.
2. Виведіть поточну дату у форматах, прийнятих у
різних сторонах світу.
3. Створіть функцію, яка має наступний
функціонал: користувач вводить дату да текст.
Функція записує у файл «Календар» дату та
відповідну подію. Сортувати дати не потрібно.
Завдання
1. Створіть функцію, яка буде зчитувати
дані з одного типу файлу та зберігати їх
у файлі іншого типу. Вона буде
приймати 3 аргументи: шлях до файлу;
змінну, яка буде визначати тип цього
файлу; змінна, яка буде визначати тип
файлу, у який потрібно зберегти дані.
Функція буде працювати з файлами
типу *.txt, *.csv, *.dat. Протестуйте
роботу функції…
2. Використовуючи засоби Python та наш
датасет, дайте відповідь на наступні питання:
1. Яка загальна кількість хворих зафіксовано
на Філіппінах на 30.08.2020?
2. Коли був зафіксований найбільший приріст
хворих за тиждень в Україні?
3. Порахуйте, чи відповідають дані по
загальній кількості випадків за 21.08.2020 по
світу сумі випадків по країнах за цю дату?
4. Запишіть в текстовий файл найбільший
показник по випадкам по кожній з країн. Н-д:
Ukraine: 0; ☺

You might also like