Рубрики
Без рубрики

Сохранение текста, JSON и CSV в файл на Python

Автор оригинала: Marcus Sanatan.

Сохранение текста, JSON и CSV в файл на Python

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

Как правило, программы принимают некоторый ввод и производят некоторый вывод. Есть множество случаев, в которых мы хотели бы сохранить эти результаты. Мы можем обнаружить, что сохраняем данные в файл для последующей обработки – с веб – страниц, которые мы просматриваем, простых дампов табличных данных, которые мы используем для отчетов, машинного обучения и обучения или ведения журнала во время выполнения приложения-мы полагаемся на приложения, пишущие в файлы, а не делающие это вручную.

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

Открытие и закрытие файла

Открытие файла

К содержимому файла можно получить доступ, когда он открыт, и он больше не доступен для чтения и записи после его закрытия.

Открыть файл в Python очень просто:

my_data_file = open('data.txt', 'w')

При открытии файла вам понадобится имя файла – строка, которая может быть относительным или абсолютным путем. Второй аргумент-это режим, который определяет действия, которые вы можете сделать с открытым файлом.

Вот некоторые из наиболее часто используемых:

  • r – (режим по умолчанию) откройте файл для чтения
  • w – открыть файл для записи, перезаписав содержимое, если файл уже существует с данными
  • x – создает новый файл с ошибкой, если он существует
  • a – открыть файл для записи, добавив новые данные в конце содержимого файла, если он уже существует
  • b – запись двоичных данных в файлы вместо текстовых данных по умолчанию
  • + – разрешить чтение и запись в режим

Допустим, вы хотите записать файл, а затем прочитать его после этого, ваш режим должен быть ” w+”. Если вы хотите писать, а затем читать из файла, не удаляя предыдущее содержимое, то вы будете использовать ” а+”.

Закрытие файла

Закрыть файл в Python еще проще:

my_data_file.close()

Вам просто нужно вызвать метод close для объекта file. Очень важно закрыть файл после того, как вы закончите его использовать, и для этого есть много веских причин:

  • Открытые файлы занимают место в оперативной памяти
  • Более низкая вероятность повреждения данных, поскольку они больше не доступны
  • Существует ограничение на количество файлов, которые может открыть ваша ОС

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

Использование ключевого слова “with”

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

Для этого нам просто нужно использовать ключевое слово with :

with open('data.txt', 'w') as my_data_file:
    # TODO: write data to the file
# After leaving the above block of code, the file is closed

Файл будет открыт для всего кода, который имеет отступ после использования ключевого слова with , помеченного как # TODO comment. Как только этот блок кода будет завершен, файл будет автоматически закрыт.

Это рекомендуемый способ открытия и записи в файл, поскольку вам не нужно вручную закрывать его, чтобы освободить ресурсы, и он предлагает безотказный механизм, чтобы держать ваш ум на более важных аспектах программирования.

Сохранение текстового файла

Теперь, когда мы знаем лучший способ доступа к файлу, давайте сразу приступим к записи данных.

К счастью, Python также делает это простым:

with open('do_re_mi.txt', 'w') as f:
    f.write('Doe, a deer, a female deer\n')
    f.write('Ray, a drop of golden sun\n')

Функция write() берет строку и помещает это содержимое в поток файлов. Хотя мы не храним его, функция write() возвращает количество только что введенных символов, то есть длину входной строки.

Примечание : Обратите внимание на включение символа новой строки, \n . Он используется для записи в следующую строку файла, в противном случае весь текст будет добавлен как одна строка.

Сохранение нескольких строк одновременно

С помощью функции write() мы можем взять одну строку и поместить ее в файл. Что, если бы мы захотели написать сразу несколько строк?

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

with open('browsers.txt', 'w') as f:
    web_browsers = ['Firefox\n', 'Chrome\n', 'Edge\n']
    f.writelines(web_browsers)

Как и прежде, если мы хотим, чтобы данные появлялись в новых строках, мы включаем символ новой строки в конце каждой строки.

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

with open('browsers.txt', 'w') as f:
    web_browsers = ['Firefox\n', 'Chrome\n', 'Edge\n']
    f.writelines("%s\n" % line for line in web_browsers)

Примечание : Вход для write lines() должен быть плоской последовательностью строк или байтов – никакие числа, объекты или вложенные последовательности, такие как список внутри списка, не допускаются.

Если вам интересно узнать больше о списках и кортежах, у нас уже есть статья, посвященная им – Списки против кортежей в Python .

Сохранение CSV-файла

Файлы CSV (значения, разделенные запятыми) обычно используются для хранения табличных данных. Из-за своей популярности Python имеет некоторые встроенные методы, облегчающие написание файлов такого типа:

import csv

weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
sales = ['10', '8', '19', '12', '25']

with open('sales.csv', 'w') as csv_file:
    csv_writer = csv.writer(csv_file, delimiter=',')
    csv_writer.writerow(weekdays)
    csv_writer.writerow(sales)

Сначала нам нужно импортировать библиотеку csv , чтобы получить их вспомогательные функции. Мы открываем файл, как мы привыкли, но вместо того, чтобы писать содержимое на объект csv_file , мы создаем новый объект с именем csv_writer .

Этот объект предоставляет нам метод writerow () , который позволяет нам поместить все данные строки в файл за один раз.

Если вы хотите узнать больше об использовании CSV-файлов в Python более подробно, вы можете прочитать больше здесь: Чтение и запись CSV-файлов в Python .

Сохранение файла JSON

JSON-это еще один популярный формат для хранения данных, и, как и в случае с Csv, Python очень просто записывает данные вашего словаря в файлы JSON:

import json

my_details = {
    'name': 'John Doe',
    'age': 29
}

with open('personal.json', 'w') as json_file:
    json.dump(my_details, json_file)

Нам действительно нужно импортировать библиотеку json и открыть файл. Чтобы на самом деле записать данные в файл, мы просто вызываем функцию dump () , давая ей наш словарь данных и объект file.

Если вы хотите узнать больше об использовании файлов JSON в Python, вы можете узнать больше из этой статьи: Чтение и запись JSON в файл в Python .

Вывод

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

Лучше всего использовать ключевое слово with , чтобы файлы автоматически закрывались, когда мы закончим писать в них.

Мы можем использовать метод write() для помещения содержимого строки в файл или использовать writelines () , если у нас есть последовательность текста для помещения в файл.

Для данных CSV и JSON мы можем использовать специальные функции, предоставляемые Python для записи данных в файл после его открытия.