Работа с файлове и директории в Python
![Работа с файлове и директории в Python](https://fedia.eu/wp-content/uploads/2024/07/OIG1.jpg)
Урок 5: Работа с файлове и директории в Python
В този урок ще разгледаме как да работим с файлове и директории в Python. Ще научим как да четем и записваме файлове, както и как да манипулираме директории. Тези умения са основни за създаването на приложения, които трябва да съхраняват и извличат данни от файловата система.
Четене и записване на текстови файлове
Работата с текстови файлове в Python се осъществява чрез вградената функция open()
.
Отваряне на файл
За да отворим файл за четене или запис, използваме функцията open()
, която приема два основни аргумента: името на файла и режима на отваряне.
r
: четене (read)w
: запис (write) – създава нов файл или презаписва съществуващa
: добавяне (append) – добавя към края на файлаb
: двоичен режим (binary)
file = open("example.txt", "r") # Отваряме файла в режим на четене
Четене на съдържание
Можем да четем съдържанието на файла с методите read()
, readline()
или readlines()
.
file = open("example.txt", "r")
# Четене на целия файл
content = file.read()
print(content)
# Четене на един ред
file.seek(0) # Връщане на указателя в началото на файла
line = file.readline()
print(line)
# Четене на всички редове
file.seek(0)
lines = file.readlines()
print(lines)
file.close() # Затваряне на файла
Записване в файл
За да записваме данни във файл, отваряме го в режим на запис или добавяне и използваме метода write()
.
file = open("example.txt", "w")
file.write("Hello, world!\n")
file.write("This is a new line.")
file.close() # Затваряне на файла
Контекстни мениджъри
Контекстните мениджъри са препоръчителен начин за работа с файлове, защото автоматично затварят файла след като сме приключили с него.
with open("example.txt", "r") as file:
content = file.read()
print(content)
# Файлът се затваря автоматично тук
Работа с двоични файловеДвоичните файлове се отварят в двоичен режим с добавяне на b
към режима на отваряне.
# Записване в двоичен файл
with open("example.bin", "wb") as file:
file.write(b'\xDE\xAD\xBE\xEF')
# Четене на двоичен файл
with open("example.bin", "rb") as file:
content = file.read()
print(content)
Работа с директории
Модулът os
предоставя функции за работа с директории и файлове в тях.
Проверка дали файл или директория съществува
import os
# Проверка дали файл съществува
print(os.path.exists("example.txt")) # True или False
# Проверка дали пътят е директория
print(os.path.isdir("example_directory")) # True или False
# Проверка дали пътят е файл
print(os.path.isfile("example.txt")) # True или False
Създаване и изтриване на директории
# Създаване на нова директория
os.mkdir("new_directory")
# Изтриване на директория
os.rmdir("new_directory")
Навигация в файловата система
# Получаване на текущата директория
print(os.getcwd())
# Промяна на текущата директория
os.chdir("new_directory")
print(os.getcwd())
# Връщане в предишната директория
os.chdir("..")
print(os.getcwd())
Изброяване на файлове и директории
# Изброяване на всички файлове и директории в текущата директория
print(os.listdir("."))
# Изброяване на всички файлове и директории в конкретна директория
print(os.listdir("/path/to/directory"))
Работа с модула shutil
Модулът shutil
предоставя функции за копиране и изтриване на файлове и директории.
Копиране на файл
import shutil
# Копиране на файл
shutil.copy("example.txt", "example_copy.txt")
Преместване на файл или директория
# Преместване на файл или директория
shutil.move("example.txt", "new_directory/example.txt")
Изтриване на директория с цялото ѝ съдържание
# Изтриване на директория с цялото ѝ съдържание
shutil.rmtree("example_directory")
Примерна програма: Управление на бележки
Нека създадем програма за управление на бележки, която позволява добавяне, четене и изтриване на бележки.
Дефиниране на функции
notes.py
import os
def add_note(filename, content):
with open(filename, "w") as file:
file.write(content)
def read_note(filename):
if os.path.exists(filename):
with open(filename, "r") as file:
return file.read()
else:
return "Note does not exist."
def delete_note(filename):
if os.path.exists(filename):
os.remove(filename)
return "Note deleted."
else:
return "Note does not exist."
def list_notes(directory="."):
return [f for f in os.listdir(directory) if os.path.isfile(f)]
Основна програма
main.py
import notes
# Добавяне на бележки
notes.add_note("note1.txt", "This is the first note.")
notes.add_note("note2.txt", "This is the second note.")
# Четене на бележки
print(notes.read_note("note1.txt"))
# Изтриване на бележка
print(notes.delete_note("note1.txt"))
# Изброяване на бележки
print("Notes in directory:")
for note in notes.list_notes():
print(note)
Заключение
В този урок разгледахме основните концепции за работа с файлове и директории в Python. Научихме как да четем и записваме текстови и двоични файлове, как да използваме контекстни мениджъри, и как да манипулираме директории с помощта на модулите os
и shutil
. В следващите уроци ще разгледаме работа с бази данни и мрежово програмиране, за да разширим още повече нашите знания и умения в Python. Практикувайте редовно и експериментирайте с различни операции с файлове и директории, за да затвърдите наученото.
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut