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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В Python закрыть файл еще проще:

 my_data_file.close() 

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

  • Открытые файлы занимают место в ОЗУ
  • Снижает вероятность повреждения данных, поскольку они больше не доступны
  • Ваша ОС может открывать не все файлы.

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

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

О закрытии файла легко забыть, ведь мы же люди. К счастью для нас, в 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 Как только этот блок кода будет завершен, файл будет автоматически закрыт.

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

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

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

К счастью, 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) 

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

Если вам интересно узнать больше о списках и кортежах, у нас уже есть посвященная им статья - Списки против кортежей в 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() , передавая ей наш словарь данных и объект файла.

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

Заключение

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

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

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

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

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus