В этом видео мы продолжим говорить о работе с файлами в 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. Не забываем, что ей нужно передать массив. Но мы хотим с ним сделать дополнительные действия. Для начала давайте добавим символы перевода строки. Это символы слэша. А теперь с помощью функции map давайте изменим тип нашего массива. [ЗВУК] Итак, мы закончили, теперь можем запускать. Теперь давайте посмотрим, как выглядит наш файл. [ЗВУК] Итак, он ровно такой, как нам бы и хотелось. Десять строк по одному числу в каждой строчке. Итак, на этом мы с вами заканчиваем работу с файлами. Теперь вы умеете работать с файлами в различных кодировках, можете читать данные, можете их записывать. А в следующем видео мы начнем знакомство с библиотекой Pandas. Она также позволяет нам гибко работать с файлами, в частности она позволяет нам работать с файлами в виде таблиц. Это довольно удобно для задачи анализа данных.