В этом видео мы продолжим говорить о работе с файлами в Python. В прошлый раз мы научились читать данные с файлов, теперь давайте учиться их в файл записывать. Это часто бывает полезно, особенно если хочется сохранить результаты вашей работы для дальнейшего анализа. Итак, мы уже знаем, что открывать файлы можно с помощью функции open из стандартной библиотеки или из библиотеки codecs. Давайте продолжим работать со встроенной функцией и откроем файл для записи. В этот раз мы будем решать следующую задачу: создадим несколько текстовых строк и запишем их в файл. Для начала снова открываем файл, в этот раз для записи. [ЗВУК] Давайте назовем его как-нибудь просто, file_to_write_in, «файл для записи», и указываем режим w, режим writing. Так, дальше нам нужно создать строчку, которую мы в файл будем записывать. Давайте просто напишем «строка для записи в файл». В конец строки не забываем добавить символ переноса строки. Он нужен, для того чтобы, в случае если мы записываем в файл сразу несколько строк, они бы не склеились в одну, а шли одна за другой. Так читать гораздо приятнее. Дальше с помощью функции write записываем эту строчку в наш файл [ЗВУК] и дальше не забываем закрыть файл. Давайте это запустим. Так, забыли скобочки. Теперь запустим еще раз. И теперь давайте посмотрим, как выглядит наш файл. Для этого можно использовать команду bash cat. [ЗВУК] Видим, что наш файл выглядит ровно так, как мы с вами и хотели. Та самая строчка, которую мы в него записывали, выведена на экран. Теперь давайте повторим процесс. Допустим, нам хочется записать еще одну строчку в этот файл. Казалось бы, нужно действовать аналогичным образом. Снова открыть файл для записи, записать строчку и вывести файл на экран. Давайте попробуем. Открываем файл, [ЗВУК] Давайте теперь создадим какую-нибудь новую строчку. Давайте напишем «вторая строка для записи в файл». [ЗВУК] Снова не забываем про символ переноса строки. Далее вызываем у файла метод write, записываем строчку [ЗВУК] и закрываем наш файл. Так, поправим имя функции и сделаем это еще раз. Итак, давайте выведем файл на экран и посмотрим, как он выглядит. [ЗВУК] Что мы видим? Наша первая строка исчезла, зато в файле появилась вторая строка. Это произошло из-за того, что мы перезаписали наш старый файл новым. Так происходит, когда мы работаем с файлами в режиме write. Если файл уже существует в данной директории, то он будет перезаписан новым файлом, а если бы файла с таким названием еще не было, то мы бы действительно создали новый файл, как в первый раз. Теперь давайте все-таки сделаем правильно. Мы с вами хотим добавить строчку в конец существующего файла, а не переписать его заново. Для этого нам просто нужно использовать другой режим. Это режим append, или режим добавления. Так, давайте снова откроем файл, [ЗВУК] только теперь не забудем указать правильный режим. Создадим новую строчку и напишем «третья строка для записи в файл». [ЗВУК] И с помощью уже знакомой нам функции write запишем эту строчку в файл. [ЗВУК] [ЗВУК] Так, теперь давайте посмотрим, что у нас получилось. Мы ожидаем увидеть две строки. Итак, действительно, в нашем файле появилась вторая и третья строка. На самом деле, часто мы хотим записать сразу много строк в файл. У нас может быть целый список строк для записи. Мы можем делать это разными способами, но самое простое — это просто в цикле записать все эти строчки с помощью функции write. Но можно поступить по-другому. Для этого существует специальная функция writelines, которая принимает в качестве аргумента список строк для записи в файл. Давайте продемонстрируем ее работу. Для начала нам с вами нужно создать этот список строк. Давайте сделаем что-нибудь простое. Допустим, запишем в файл числа от 1 до 10. Для этого сначала создаем массив этих чисел, назовем его digits и сделаем это с помощью функции range. Давайте выведем его на экран. Итак, мы видим, что это простые числа. Теперь нужно их записать. Но тут есть два нюанса. Во-первых, в файл мы можем записывать только строчки, поэтому сначала нам нужно изменить тип нашего массива и сделать его массивом строк. Второй нюанс следующий: если мы запишем эти строки как есть, то они у нас при записи склеятся в одно значение, потому что у нас нет символов перевода строки. Поэтому перед записью нам с вами нужно не забыть эти символы добавить в конец каждой строки. Так. Теперь снова открываем файл для записи. Давайте сделаем это немножечко по-другому: будем использовать ключевое слово with. Это довольно удобно, потому что в этом случае нам не нужно беспокоиться о закрытии файла. Мы можем быть уверены, что при выходе из блока with, файл будет закрыт. Итак, набираем это ключевое слово, дальше открываем файл для записи как обычно, с помощью функции open. Давайте запишем данные на этот раз в другой файл, назовем его «второй файл для записи». [ЗВУК] [ЗВУК] Дальше сразу же начинаем писать с помощью функции writelines. [ЗВУК] Не забываем, что ей нужно передать массив, но мы хотим с ним сделать дополнительные действия. Для начала давайте добавим символы перевода строки, это символ \n. А теперь с помощью функции map давайте изменим тип нашего массива. [ЗВУК] Вот так. Мы закончили, теперь можем запускать. Теперь давайте посмотрим, как выглядит наш файл. [ЗВУК] Вот так. Он ровно такой, как нам бы и хотелось, 10 строк по одному числу в каждой строчке. Итак, на этом мы с вами заканчиваем работу с файлами. Теперь вы умеете работать с файлами в различных кодировках, можете читать данные, можете их записывать. А в следующем видео мы начнем знакомство с библиотекой Pandas. Она также позволяет нам гибко работать с файлами, в частности, она позволяет нам работать с файлами в виде таблиц. Это довольно удобно для задач анализа данных.