Урок 22. Файли

Python підтримує різноманітні типи файлів. Файли можна розділити на дві великі групи:

  • Текстові файли – файли, які зберігають інформацію у текстовому форматі, напр. txt, html, csv тощо.
  • Двійкові файли – зображення, аудіо, відео тощо.

Робота з файлами може відрізнятися в залежності від типу файлу.

Послідовність роботи з файлами:

  1. Використовуйте метод open(), щоб відкрити файл
  2. Використовуйте метод read() для читання файлу або метод write() для запису у файл.
  3. Використовуйте метод close(), щоб закрити файл.

Для початку роботи з файлом скористайтеся методом open(), щоб відкрити його: open(file, mode). Перший параметр – це шлях до файлу. Він може бути абсолютним або відносним.

Приклад абсолютного шляху до файлу – C://directoryname/filename.txtC://directoryname/filename.txt

Відносний шлях до файлу залежить від місця поточного скрипта Python. Приклад відносного шляху: directoryname/filename.txtdirectoryname/filename.txt

Другим аргументом є режим. Є чотири режими:

  • r (Read/Читання). Відкриває файл для читання. Якщо файл не знайдено, генерується FileNotFoundError.
  • w (Write/Написати). Відкриває файл для запису в нього. Якщо файл відсутній, він створений. Якщо файл присутній, він створюється знову, а всі дані в ньому стираються.
  • a(Append/Додати). Відкриває файл для внесення змін без стирання попередніх даних. Якщо файл відсутній, він створюється. Якщо файл присутній, нова інформація додається в кінці файлу.
  • x (Create/Створити). Створює файл, якщо файл існує, повертає помилку.

Крім того, ви можете вказати, чи потрібно обробляти файл у двійковому чи текстовому режимі:

  • t – text – значення за замовчуванням. Текстовий режим
  • b – binary – Двійковий режим (наприклад, зображення)

Функція open() в Python використовується для відкриття файлів. Вона повертає об’єкт файлу, з яким можна працювати. Приклад з відео:

#відкрити файл у режимі «запису».
file1 = open("file.txt", "w")
#закрити файл
file1.close()

Під час роботи з файлами можуть виникати помилки, для обробки яких можна використовувати блоки try except. Приклад з відео:

#Під час роботи з файлами можливі винятки.
#Ви можете використовувати блоки 
#"try...except" для вирішення таких проблем.
try:
    file2 = open("file2.txt", "w")
    try:
        file2.write("Python is a solid choice.")
    except Exception as exInner:
        print(exInner)
    finally:
        file2.close()
except Exception as exOuter:
    print(exOuter)

Вираз with в Python

Вираз with в Python використовується для управління контекстом, що дозволяє автоматично обробляти ресурси, такі як файли або з’єднання. Він забезпечує безпечне відкриття і закриття ресурсів, навіть якщо виникає помилка.

Основні переваги використання with:

  • Автоматичне закриття ресурсів: Наприклад, при відкритті файлу, with автоматично закриває його після виходу з блоку, навіть якщо сталася помилка.
  • Читабельність: Код стає більш зрозумілим і компактним.

Приклад з відео:

#Можна використовувати вираз "with". 
#Він закриває файли в будь-якому разі.
# with open(filename, mode) as file_obj:
#    commands
#with вираз визначає змінну file_obj для відкритого файлу.
with open("file3.txt", "w") as fileInUse:
    fileInUse.write("Python is a solid choice. File3.")

Метод write()

Метод write() в Python використовується для запису певного тексту у файл. Приклад з відео:

#створити новий файл і вписати в нього текст.
with open("file4.txt", "w") as fileInUse:
    fileInUse.write("Java is a solid choice. File4")
    
with open("file4.txt", "w") as fileInUse:
    fileInUse.write("Python is a solid choice. File4.")
    
with open("file4.txt", "a") as fileInUse:
    fileInUse.write("\nJava is a solid choice. File4")
    
with open("file4.txt", "a") as fileInUse:
    print("\nC# is a solid choice. File4", file=fileInUse)

Зчитування файлу

Зчитування файлу в Python зазвичай здійснюється за допомогою методу open() у поєднанні з методами для читання вмісту. Основні способи зчитування:

  • read() – Зчитує весь вміст файлу як один рядок.
  • readline() – Зчитує один рядок за раз.
  • readlines() – Зчитує всі рядки та повертає їх у вигляді списку.

Приклад з відео:

#ви можете прочитати текстовий файл за допомогою cycle for
with open("file4.txt", "r") as fileInUse:
    for line in fileInUse:
        print(line, end="")#readline is used behind the scene

#Явне використання readline
print("\nExplicit use of readline\n")        
with open("file4.txt", "r") as fileInUse:
    str1=fileInUse.readline()
    print(str1, end="")
    str2=fileInUse.readline()
    print(str2, end="")
    str3=fileInUse.readline()
    print(str3, end="")

Приклад з відео із поєднанням readline() з циклом while та застосуванням методу read():

#readline() у поєднанні з циклом while
with open("file4.txt", "r") as fileInUse:
    fileLine = fileInUse.readline()
    while fileLine:
        print(fileLine, end="")
        fileLine = fileInUse.readline()
print()
#для невеликих файлів можна 
#використовувати метод read().
with open("file4.txt", "r") as fileInUse:
    fileContent = fileInUse.read()
    print(fileContent)

Приклад із застосуванням readlines() та додаванням encoding параметра з відео:

#Метод readlines() можна використовувати 
#для читання всіх рядків файлу
#вони будуть збережені як список
with open("file4.txt", "r") as fileInUse:
    fileContent = fileInUse.readlines()
    print(fileContent)
    
#якщо є проблеми з кодуванням, 
#можна скористатися параметром кодування
with open("file4.txt", encoding="utf8") as fileInUse:
    fileContent = fileInUse.read()
    print(fileContent)

Файли csv

Робота з CSV-файлами в Python зазвичай здійснюється за допомогою стандартної бібліотеки csv, яка забезпечує прості інструменти для читання та запису CSV-даних. Приклад з відео:

#У Python є модуль csv. 
#Цей модуль спрощує роботу з файлами csv.
import csv

fileName = "file8.csv"

customers = [
    ["Solverson", 35],
    ["Jackson", 29]
    ]
with open(fileName, "w", newline="") as fileInUse:
    writer = csv.writer(fileInUse)
    writer.writerows(customers)
    
with open(fileName, "a", newline="") as fileInUse:
    customer = ["Smith", 25]
    writer = csv.writer(fileInUse)
    writer.writerow(customer)
    
with open(fileName, "r", newline="") as fileInUse:
    reader=csv.reader(fileInUse)
    for i in reader:
        print("Name: {}, Age: {}".format(i[0], i[1]))

Модуль OS

В Python є вбудований модуль os.

Цей модуль містить низку корисних функцій:

  • mkdir() – створює нову папку
  • rmdir() – видаляє папку
  • rename() – перейменовує файл
  • remove() – видаляє файл

Модуль os в Python — це стандартна бібліотека, яка надає функції для взаємодії з операційною системою. Він дозволяє виконувати різні операції, такі як робота з файлами і каталогами, отримання інформації про систему, а також управління середовищем. Приклад з відео:

import os

#використання методу mkdir
try:
    os.mkdir("dir1")
    with open("dir1/file.txt","w") as fileInUse:
        fileInUse.write("Python is a solid choice")
    with open("dir1/file.txt", "r") as fileInUse:
        content = fileInUse.read()
        print(content)
        
except Exception as e:
    print(e)

Приклад з перейменуванням файлу з відео:

import os

os.rename("dir1/file.txt", "dir1/fileRenamed.txt")
with open("dir1/fileRenamed.txt", "r") as fileInUse:
    content = fileInUse.read()
    print(content)

Приклад з видаленням файлу та папки з відео:

import os

#delete folder dir1
os.remove("dir1/fileRenamed.txt")
os.rmdir("dir1")
Урок 22. Файли

В цьому відео поговоримо про:
00:07 Files
12:22 write() – “w” and “a”
15:54 Reading file
27:23 csv files
34:46 OS Module

Приклади на Github

Leave a Reply

Your email address will not be published. Required fields are marked *