Операции с файлами в Python
avatar
7 | (offline)
❤️‍🔥Notehunter Developer
Добавлено:
Категория: Основы «Python»
Комментариев: 0

В данном руководстве по Python мы научимся работать с файлами с помощью различных операций. Давайте рассмотрим методы чтения и записи в файлы, а также их удаление. 

Работа с файлами

Последовательность работы:

  • Открыть файл.
  • Принять ввод из этого файла  и записать вывод в этот файл.
  • Закрыть файл.

Открытие файла с помощью функции open()

Первый шаг в работе с файлами в Python — научиться открывать файл. Вы можете открывать файлы с помощью метода open()

Функция open() в Python принимает два аргумента. 

  • Первое — это имя файла с полным путем.
  • Второе — режим открытия файла. Вот некоторые из распространенных режимов чтения файлов:
rТолько для чтения.
wТолько для записи. Создаст новый файл, если не найдет с указанным именем.
rbТолько для чтения (бинарный).
wbТолько для записи (бинарный). Создаст новый файл, если не найдет с указанным именем.
r+Для чтения и записи.
rb+Для чтения и записи (бинарный).
w+Для чтения и записи. Создаст новый файл для записи, если не найдет с указанным именем.
wb+Для чтения и записи (бинарный). Создаст новый файл для записи, если не найдет с указанным именем.
aОткроет для добавления нового содержимого. Создаст новый файл для записи, если не найдет с указанным именем.
a+Откроет для добавления нового содержимого. Создаст новый файл для чтения записи, если не найдет с указанным именем.
abОткроет для добавления нового содержимого (бинарный). Создаст новый файл для записи, если не найдет с указанным именем.
ab+Откроет для добавления нового содержимого (бинарный). Создаст новый файл для чтения записи, если не найдет с указанным именем.

Давайте создадим файл file.txt в каталоге с нашим main.py. Впишем тестовые данные в file.txt и попробуем попрактиковаться:

Способы открытия/закрытия (важно) файла

Способ первый - открыть файл с помощью open() и закрыть после выполнения кода с помощью close()

text_file = open(file='file.txt', mode='r', encoding='utf-8')

for text in text_file.readlines():
    print(text)

text_file.close()

После закрытия этот файл нельзя будет использовать до тех пор, пока заново его не открыть.

Способ второй - вы также можете написать try/finally, который гарантирует, что если операции с файлом приведут к исключениям после открытия файла, он автоматически закроется.

text_file = open(file='file.txt', mode='r', encoding='utf-8')

try:
    for text in text_file.readlines():
        print(text)
finally:
    text_file.close()

Способ третий - конструкция with

Другой подход заключается в использовании оператора with, который упрощает обработку исключений за счет инкапсуляции начальных операций, а также закрытия и очистки задач.

В этом случае оператор close() не нужен, потому что with автоматически закроет файл.

with open(file='file.txt', mode='r', encoding='utf-8') as text_file:
    for text in text_file.readlines():
        print(text)

Результат из консоли:

Сегодня мы тестируем

А что тестируем?

Операцию над файлами.

Чтение и запись файлов 

Python предлагает множество методов чтения и записи файлов, в которых каждая функция ведет себя по-разному.

 Следует отметить один важный момент — режим работы с файлами. 

Чтобы прочитать файл, вы должны открыть его в режиме чтения или записи. Однако для записи в файл в Python файл должен быть открыт в режиме записи. 

Вот некоторые функции Python, которые могут читать и записывать файлы:

Методы файла в Python

file.close()закрывает открытый файл
file.fileno()возвращает целочисленный дескриптор файла
file.flush()очищает внутренний буфер
file.isatty()возвращает True, если файл привязан к терминалу
file.next()возвращает следующую строку файла
file.read(n)чтение первых n символов файла
file.readline()читает одну строчку строки или файла
file.readlines()читает и возвращает список всех строк в файле
file.seek(offset[,whene])устанавливает текущую позицию в файле
file.seekable()проверяет, поддерживает ли файл случайный доступ. Возвращает True, если да
file.tell()возвращает текущую позицию в файле
file.truncate(n)уменьшает размер файл. Если n указала, то файл обрезается до n байт, если нет — до текущей позиции
file.write(str)добавляет строку str в файл
file.writelines(sequence)добавляет последовательность строк в файл

Давайте попробуем записать что-нибудь в наш файл:

text_file = open(file='file.txt', mode='w', encoding='utf-8')

# Список из слов
word_list = []

# Цикл записи строк
for i in range(1, 5):
    print('Введите данные для записи в файл: ')
    line = input()
    word_list.append(line)

# Запись введенных данных
text_file.writelines(word_list)

# Закрываем файл
text_file.close()

Результат:

Введите данные для записи в файл: 
Тест 1
Введите данные для записи в файл: 
Тест 2
Введите данные для записи в файл: 
Тест 3
Введите данные для записи в файл: 
Тест 4

Содержимое:

А давайте прочитаем не весь файл?

text_file = open(file='file.txt', mode='r', encoding='utf-8')

print(text_file.read(10))

# Закрываем файл
text_file.close()

Где 10 - количество символов читаемых из файла.

Результат:

Сегодня мы

Текущая позиция в файлах Python

В Python можно узнать текущую позицию в файле благодаря функции tell(). Точно так же вы можете изменить текущую позицию с помощью команды seek()

text_file = open(file='file.txt', mode='r', encoding='utf-8')

print(text_file.read(8))
print('Position: ', text_file.tell())
text_file.seek(0, 0)

# Закрываем файл
text_file.close()

Результат:

Напоминаю, что UTF-8 – кодировка символов юникод в двоичном виде.

Сегодня 
Position: 15

В Windows по умолчанию: windows-1251

Сегодня 
Position: 8

Поэтому и позиции разные.

Переименование файлов в Python

Функция rename() используется для переименовывания файлов в Python. Для ее использования сперва нужно импортировать модуль os.

Пример:

import os

os.rename(src, dest)

Пояснения:

  • src - файл, который нужно переименовать
  • dest - новое имя файла

Например:

import os

os.rename('file.txt', 'nth.txt')

Удаление файла

Модуль os позволяет нам удалить файл с помощью os.remove(), os.unlink()

import os

os.unlink('file.txt')
os.remove('file.txt')
Комментарии к статье 0
Комментариев нет
Форма добавления комментария (необходима регистрация)