Как записать текстовый файл в Python

В этом уроке вы узнаете различные способы написания текстовых файлов на Python.

Самый простой способ:

with open('readme.txt', 'w') as f:
    f.write('readme')
Содержание

Действия по записи в текстовые файлы

Чтобы записать текстовый файл в Python, выполните следующие действия:

  • Сначала откройте текстовый файл для записи (или добавления) с помощью функции open().
  • Во-вторых, запишите в текстовый файл, используя метод write() или writelines().
  • В-третьих, закройте файл с помощью метода close().

Ниже показан основной синтаксис функции open():

f = open(file, mode)

Функция open() принимает множество параметров. Но вы сосредоточитесь на первых двух:

  • Параметр file указывает путь к текстовому файлу, который вы хотите открыть для записи.
  • Параметр mode указывает режим, в котором вы хотите открыть текстовый файл.

Для записи в текстовый файл вы используете один из следующих режимов:

Режим Описание
‘w’ Откройте текстовый файл для записи. Если файл существует, функция обрежет все содержимое, как только вы его откроете. Если файл не существует, функция создает новый файл.
‘a’ Откройте текстовый файл для добавления текста. Если файл существует, функция добавляет содержимое в конец файла.
‘+’ Откройте текстовый файл для обновления (как для чтения, так и для записи).

Функция open() возвращает объект файла, который имеет два полезных метода для записи текста в файл: write() и writelines().

  • Метод write() записывает строку в текстовый файл.
  • Метод writelines() одновременно записывает список строк в файл.

Метод writelines() принимает итерируемый объект, а не просто список, поэтому вы можете передать в метод writelines() кортеж строк, набор строк и т. д.

Чтобы записать строку в текстовый файл, вам нужно вручную добавить новый символ строки:

f.write('\n')
f.writelines('\n')

Примеры записи в текстовый файл

В следующем примере показано, как использовать функцию write() для записи списка текстов в текстовый файл:

lines = ['Readme', 'How to write text files in Python']
with open('readme.txt', 'w') as f:
    for line in lines:
        f.write(line)
        f.write('\n')

Если файл readme.txt не существует, функция open() создаст новый файл.

Как записывать текстовые файлы в Python

Ниже показано, как записать список текстовых строк в текстовый файл:

lines = ['Readme', 'How to write text files in Python']
with open('readme.txt', 'w') as f:
    f.writelines(lines)

Если вы рассматриваете каждый элемент списка как строку, вам необходимо объединить его с символом новой строки следующим образом:

lines = ['Readme', 'How to write text files in Python']
with open('readme.txt', 'w') as f:
    f.write('\n'.join(lines))

Пример написания текстового файла

Добавление текста

Чтобы добавить текст в текстовый файл, вам необходимо открыть текстовый файл в режиме добавления. В следующем примере в файл readme.txt добавляются новые строки:

more_lines = ['', 'Append text files', 'The End']

with open('readme.txt', 'a') as f:
    f.write('\n'.join(more_lines))

Выход:

Добавление текста

Запись в текстовый файл UTF-8

Если вы запишете символы UTF-8 в текстовый файл, используя код из предыдущих примеров, вы получите такую ошибку:

UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-44: character maps to <undefined>

Чтобы открыть файл и записать в него символы UTF-8, вам необходимо передать параметр encoding=’utf-8′ в функцию open().

В следующем примере показано, как записать символы UTF-8 в текстовый файл:

quote = '成功を収める人とは人が投げてきたレンガでしっかりした基盤を築くことができる人のことである。'

with open('quotes.txt', 'w', encoding='utf-8') as f:
    f.write(quote)

Заключение

  • Используйте функцию open() с режимом w или a, чтобы открыть текстовый файл для добавления.
  • Всегда закрывайте файл после завершения записи с помощью метода close() или используйте оператор with при открытии файла.
  • Используйте методы write() и writelines() для записи в текстовый файл.
  • Передайте кодировку = ‘utf-8’ в функцию open(), чтобы записать символы UTF-8 в файл.
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *