Free YouTube Transcribe

Video transcript

Уроки Python с нуля / #13 – Работа с файлами за счет Питон

Школа itProger / Программирование · 2,416 words · 11 min read

Want to search this transcript, jump the video from any line, or download it as TXT, SRT, or VTT?

Open in the transcript tool

Full transcript

Начало

0:00Привет. В ходе этого урока мы с вами

0:01научимся создавать, читать, а также

0:03записывать информацию в файлы на основе

0:06языка Python. А перед началом я бы хотел

0:08порекомендовать сайт itproger.com. На

0:11этом сайте вы найдёте код, домашние

0:12задания и много другой полезной

0:14информации. Ссылка на этот урок на сайте

0:16будет в описании к этому видео. В языке

Принципы работы с файлами

0:18Python существуют разные функции по

0:20работе с файлами. При этом вам нужно

0:22всегда помнить несколько нюансов.

0:24Во-первых, любой файл, с которым вы

0:25хотите работать, его изначально нужно

0:27открыть. Для этого существует одна

0:29определённая функция. После открытия

0:32файла вам необходимо что-либо выполнить

0:34с этим файлом. То есть, например, там

0:36прочитать информацию из него или

0:37наоборот вписать в него информацию. И

0:40далее после работы с файлом вам его

0:42всегда необходимо закрывать. И это

0:44важный момент, потому что многие

0:45забывают закрывать файл, и у них

0:47происходит утечка памяти. Если файлы вы

0:50не будете закрывать и вот откроете там

0:5210 файлов и все их забудете закрыть, то

0:54ваша программа, она уже будет достаточно

0:56перегружена, потому что программа будет

0:58тратить ресурсы на обработку каждого из

1:01открытых файлов. Ну и, соответственно,

1:02будет идти утечка памяти. Поэтому после

1:05того, как вы открыли файл и поработали с

1:07ним, всегда его нужно закрывать. Ну и

1:09сейчас мы это как раз всё с вами

1:11научимся делать за счёт языка Python.

1:13Итак, для начала давайте попробуем

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

1:15открыть какой-либо файл. Сперва я

1:17давайте создам некую переменную. Пускай

1:19эта переменная будет называться как

1:20файл. У неё название может быть каким

1:22угодно. Я её, например, назову как файл.

1:24Именно в эту переменную я и помещу

1:26открытый файл. И именно через эту

1:28переменную я и буду работать с этим

1:30файлом. Далее, чтобы открыть файл, мне

1:32необходимо использовать такую функцию,

1:34которая называется как Open. Эта

1:36функция, она принимает несколько

1:38параметров. Мы укажем сейчас первый

1:39параметр. И в этом первом параметре я

1:41просто говорю, какой конкретно файл я

1:43буду открывать. Предположим, что я буду

1:46открывать файл, который пускай будет

1:48называться как.txt.

1:51Причём на данный момент вы можете

1:52заметить, что у меня этого файла нет в

1:54проекте. И если такого файла нет у вас в

1:56проекте, то он будет создан

1:58автоматически. Также, если вы хотите,

2:00чтобы файл был создан в какой-то

2:02отдельной папке, то на самом-то деле вы

2:04можете, ну, здесь прописать название

2:06нужной папки, например, дата. Дальше

2:08указываете сш и говорите, что в этой

2:10папке у вас будет создан нужный вам

2:13файл. Вот мы давайте даже создадим,

2:14пожалуй, такую папку. А, а сам файл, он

2:17уже будет создан автоматически внутри

2:19самой этой папки. Ну и папку я, конечно

2:21же, называю как-то. И внутри этой папки

2:23у меня будут храниться все файлы. После

2:26того, как мы указали нужный файл,

2:28который нам необходимо открыть, нам

2:29также необходимо ещё указать второй

2:31параметр. И во втором параметре мы

2:33указываем способ открытия файла. Дело в

2:37том, что существуют разные способы

2:38открытия файла. можно открыть файл для

2:40чтения, можно открыть файл для записи,

2:43можно просто открыть файл для его

2:45создания и, например, там записи, ну и

2:47так далее. Мы сейчас с вами будем

2:49использовать такой режим, который

2:50называется как W. Он он означает то, что

2:53мы открываем файл для чтения, то есть WR

2:55right. Также информация относительно

2:56других режимов представлена на сайте IT

2:59Proger. Ссылку на этот урок на сайт я

3:01оставлю в описании к этому видео. Там вы

3:02можете перейти, и там будет удобная

3:04табличка, в которой будут расписаны

3:06различные форматы. Некоторые из них мы

3:08сейчас изучим, но некоторые просто редко

3:10используются и, соответственно, они

3:11будут приведены просто в самой этой

3:13табличке. Так вот, смотрите, на данный

3:15момент мы с вами как бы указали то, что

3:17мы открываем определённый файл и указали

3:20режим его открытия. Мы открываем его для

3:22дальнейшей записи информации внутрь

3:24него. Следующее, что я всегда вам

3:26предлагаю делать, так это сразу

3:28закрывать сам файл. Для этого мы просто

3:30обращаемся к файлу и обращаемся к

3:32функции close. Вот таким вот вот таким

3:35вот образом. Если вы просто забудете

3:39закрыть файл, то у вас будет утечка

3:41памяти. Поэтому лучше вы сразу всегда

3:42это делайте. А уже между функцией open,

3:45а также между функцией close вы как раз

3:47и прописываете работу с самим файлом.

Запись данных в файл

3:51Например, здесь я просто хочу указать

3:53то, что я буду помещать некую информацию

3:54в файл. Для этого я обращаюсь опять же к

3:57нашей переменной файл. Обращаюсь к

3:59методу WR right. И метод write он

4:01позволяет нам занести некую строку,

4:04некий текст внутрь файла. Здесь может

4:06быть любой текст, какой только захотите.

4:08Давайте мы здесь просто поместим строку

4:10Hello. Ну и пока больше ничего

4:12дополнительно дописывать не будем. Если

4:14сейчас запустить программу, замечаем,

4:16что ничего не было выведено в консоль.

4:17Это вполне логично, потому что мы здесь

4:19ничего не выводили. В то же время внутри

4:22папки data у нас уже здесь есть новый

4:24файл. И в этом файле у нас как как раз

4:26прописано слово hello. Всё обработалось

4:28максимально корректно. Дополнительно,

4:31если вы хотите указать здесь несколько

4:33строчек кода, несколько строчек текста,

4:35вернее, то вы можете здесь указать

4:37несколько раз вот этот вот файл right.

4:40Ну и, например, здесь я давайте добавлю

4:41ещё три восклицательных знака. Если я

4:44такое запущу, то мы заметим, что,

4:45видите, вот у нас здесь было прописано

4:47hello. А дополнительно ещё к этому же

4:49тексту были добавлены три

4:50восклицательных знака. Причём вы можете

4:53заметить, что у нас не было перевода на

4:55новую строку. Несмотря на то, что мы

4:56вызвали два раза метод write, у нас не

4:58было перевода на новую строку. Так

5:00происходит по той причине, что здесь, в

5:02отличие от метода print, у нас в конце

5:04не добавляется перевод на новую строку.

5:07Если нам нужен перевод на новую строку,

5:08мы его можем прописать самостоятельно.

5:10Ну и он прописывается следующим образом.

5:12Это сN, то есть мы как мы как бы

5:14говорим, что мы переходим на новую

5:16строку. Если же мы сейчас с вами такое

5:18запустим, то мы заметим, что видите, вот

5:20у нас идёт hello, а уже с новой строки

5:23идут три восклицательных знака. Причём,

5:25сколько бы раз я сейчас не запускал

5:27программу, у нас каждый раз не будет

5:29добавляться этот текст к предыдущему. У

5:31нас каждый раз просто открывается этот

5:33файл, с него стирается полностью вся

5:35информация и вместо прошлой информации

5:37записывается некая новая информация. Так

5:40происходит из-за того, что у нас сейчас

5:41метод работы с файлом, он указан здесь

5:44как write. То есть этот метод, он

5:46позволяет нам просто открыть файл. Если

5:48этого файла не существует, то файл будет

5:49создан. И дальше каждый раз при записи

5:52информации у нас полностью вся

5:53предыдущая информация удаляется и

5:54записывается новая информация. Если же

5:57мы хотим к текущей информации добавить

6:00новую информацию в её конец, да, то

6:02нужно использовать метод открытия

6:04файлов, как а он расшифровывается как

6:07append, то есть добавление информации.

6:10Работает он точно так же само, как и

6:11предыдущий формат. Вот только в этот раз

6:14у нас к текущей информации будет

6:17добавляться новая информация. Поэтому,

6:18видите, у нас здесь было написано Hello.

6:20Потом

6:21три восклицательных знака и дальше в

6:24самый конец, вот, а, конец у нас был

6:26здесь, у нас добавляется новый текст. И

6:28этот текст, он опять же тот же самый,

6:29что и был ранее, да? То есть это hello и

6:31три восклицательных знака. Если я ещё

6:33раз вот один раз запущу, второй раз

6:35запущу, допустим, третий раз запущу, то

6:36каждый раз мы заметим, что у нас

6:38постоянно вот добавляется этот текст. Ну

6:40и он добавляется уже к текущему

6:41предыдущему значению. То есть, если

6:44нужно просто переписать файл, то

6:46используйте формат WR, то есть буковочку

6:48W. Если нужно добавить информацию, то

6:50используйте формат А, то есть append, то

6:52есть добавление некой информации. Ну и

6:56также мы давайте рассмотрим что-то ещё

6:57более интересное. Мы давайте с вами

Пользовательские данные

7:00лучше попробуем сделать так, чтобы у нас

7:01пользователь вводил информацию через

7:04консоль. И дальше мы эту консоль мы и

7:06дальше мы эту информацию, вернее, будем

7:07как раз и добавлять внутрь файла.

7:09Соответственно, здесь я укажу некую

7:12переменную дата. Мы внутрь этой

7:15переменной будем устанавливать значение,

7:17что получим от пользователя. Здесь будет

7:18написано: "Введите текст". Ну, например,

7:20что-то в этом духе. Также я давайте,

7:22наверное, формат открытия файла всё-таки

7:24установлю как right, то есть буквочку W.

7:27Просто чтобы у нас каждый раз

7:28переписывалась вся информация, что была

7:30в файле. Ну и далее мы, давайте здесь,

7:33наверное, будем лишь

7:34один раз использовать функцию WR right.

7:37И внутрь этой функции мы с вами будем

7:39помещать информацию от пользователя, да?

7:42То есть мы помещаем по сути

7:44ну по сути то значение, которое будет

7:45находиться в переменной дата. Если я

7:47сейчас такое запущу и здесь мы напишем

7:50Hello world, допустим, что-то в этом

7:52духе, нажму Enter. В таком случае

7:54программа завершилась. И если зайти в

7:55файл, то всё обработалось здесь

7:57абсолютно корректно, как мы это можем с

7:59вами как раз и заметить. Также возможно,

8:02я бы хотел ещё сюда добавлять в конец

8:04всегда перевод на новую строку и плюс,

8:06наверное, всё-таки давайте мы прошлый

8:09формат будем использовать, да, это

8:11append. Единственное, тогда немного

8:13видоизменю текст, чтобы у нас просто как

8:15бы был уже перевод на новую строку и

8:16чтобы мы следующий текст добавляли

8:17именно с новой строки. Ну и ещё раз

8:19давайте, наверное, я просто запущу

8:21программу. Здесь мы напишем что-то My

8:24app is cool, что-то в этом духе, да? То

8:27есть моя программа крутая. Нажмём ещё

8:29раз Enter. И вот мы замечаем, что,

8:31видите, у нас был Hello World, потом

8:32добавился новый текст и плюс у нас опять

8:34же идёт ещё перевод на новую строку. Всё

8:36обрабатывается верно. Теперь же мы

8:39давайте научимся с вами ещё считывать

8:41данные из какого-либо файла. Для

8:44считывания данных нам необходимо

Считывание данных

8:46использовать по сути всю ту же самую

8:48логику. То есть мы должны изначально

8:49открыть файл, дальше мы должны считать

8:51данные, а дальше мы должны закрыть сам

8:53по себе файл. Мы давайте для начала

8:55закомментируем все вот эти вот сторочки

8:57кода, чтобы они нам просто больше не

8:59мешали. Мы будем сейчас работать

9:00конкретно с считыванием данных, да,

9:03поэтому мы их закомментируем даже

9:04немного. Я их вот так вот сверну. Ну и

9:06дальше пропишем новый наш код. Итак,

9:09здесь я, наверное, создам перемену,

9:11укажу ей точно такое же название,

9:12например, как файл. Конечно же, название

9:14может быть каким угодно, но это вполне

9:16логичное название, поэтому такое

9:17указываю. Далее обращаюсь опять-таки к

9:19функции open. И здесь мне необходимо

9:22указать в качестве первого параметра -

9:24это файл, который я буду открывать. В

9:25моём случае это файл, который находится

9:27в папке data, и он называется text.txt.

9:30Ну и дальше нужно указать формат

9:32открытия этого файла. Мы открываем файл

9:34для чтения, поэтому здесь я указываю

9:36буквочку R. Она означает то, что мы

9:38открываем его для формата read или же

9:41чтения. Также опять же предлагаю вам

9:43сразу в конце указывать close, чтобы

9:45просто не забыть закрыть файл, потому

9:48что если это вы забудете, то будет, ну,

9:50небольшие програм небольшие проблемки,

9:52ваша программа будет тормозить. Ну и

9:54теперь мы давайте попробуем с вами

9:55сделать следующее. Мы обратимся к файлу

9:58и обратимся к такой функции, которая

10:01называется как read. И давайте пока вот

10:04давайте пока вот просто попробуем это

10:05запустить и посмотреть, что же у нас

10:07получится. Конечно, ничего у нас не

10:09получится, потому что я забыл это ещё

10:10вывести на экран. Ну давайте вот теперь

10:12попробуем это запустить. И вот мы

10:14замечаем, что если мы просто обращаемся

10:16к функции read, то эта функция, если

10:19никаких параметров не передавать, то она

10:20просто берёт полностью весь текст, что

10:23находится в самом файле, и полностью

10:24весь этот текст она его возвращает. В

10:26нашем случае он сразу ещё был выведен на

10:28экран. Помимо этого, мы ещё можем сюда

10:30передавать параметры. Это будет число. И

10:33за счёт этого числа мы указываем,

10:34сколько символов должно быть выведено на

10:36экран. Например, указываю единицу и

10:39будет выведен лишь один символ. Вот у

10:41нас буквочка H и было выведено. Укажу,

10:44например, четыре. И первые четыре

10:45символа как раз и будут выведены. Вот у

10:47нас было выведено Hell. Также могу

10:49указать, например, здесь 20. Ну и,

10:51соответственно, первые 20 символов, они

10:53и будут выведены. То бишь, если нужно

10:55прочитать полностью весь текст, то в

10:56таком случае используем readт без

10:58передачи параметра. Если нужно а вывести

11:01несколько символов, то ещё плюс

11:02указываем число. И, соответственно,

11:04такое количество символов, оно и будет

11:06выведено. И если вдруг вам необходимо

11:08считывать файл построчно, то в таком

11:10случае мы можем создать здесь цикл. То

11:13есть мы создаём цикл for. Здесь давайте

11:15я переменную назву, например, как lйн. И

11:17дальше я говорю, что я всё это перебираю

11:19внутри нашего как раз файла. Также,

11:22наверное, вот этот вывод информации я

11:23здесь закомментирую, чтобы просто

11:25дополнительно не выводилось ничего. Ну и

11:27здесь я просто давайте буду выводить на

11:29экран саму эту переменную. То есть

11:31используем print и используем переменную

11:34нашу l. В таком случае мы замечаем, что

11:36у нас всё было выведено. При этом между

11:38строчками у нас был проставлен один

11:40дополнительный пропуск. Такое произошло

11:42по причине того, что за счёт лайн, за

11:44счёт вообще этого всего цикла мы

11:46считывали по одной строке. При этом в

11:49каждой из этих строк у нас в конце идёт

11:51как бы ещё перевод на новую строку. Мы

11:53его здесь как бы не видим, но на

11:54самом-то деле он, конечно же, есть.

11:56Поэтому, когда мы считываем по одной

11:58строке, мы получаем определённый текст,

12:00дальше получаем перевод на новую строку

12:02и print. вот этот вот метод, вот это вот

12:04эта вот функция, она дополнительно ещё

12:06делает один перевод строки. Поэтому мы и

12:08получаем, что у нас идёт здесь как бы

12:10один дополнительный такой вот пропуск.

12:12Точно то же самое вот здесь. И плюс,

12:14поскольку мы ещё и поскольку мы ещё

12:16считали и третью строку, то у нас как бы

12:18здесь в конце ещё были созданы два таких

12:20дополнительных пропуска. Вот. Если не

12:22хотите, чтобы создавались все эти

12:24пропуски, опять же используем end. Здесь

12:27указываем пустую строку. И в таком

12:28случае, видите, вот оно всё срабатывает

12:31точно так же, как и срабатывало при

12:32методе read. То бишь для чтения файла вы

12:35можете использовать либо функцию read и

12:37можете передавать в неё количество

12:39символов, которые вы хотите получить,

12:41либо можете использовать цикл для чтения

12:43по одной строке из самого файла. В

Заключительная часть

12:46общем, и на этом наш урок подходит к

12:48концу. В этом уроке мы научились

12:49работать с файлами через язык Python. Ну

12:51и при работе с файлами вам нужно помнить

12:53лишь несколько вещей. Во-первых, файл

12:55всегда нужно открыть. Причём нужно

12:56указать верный формат открытия. Далее с

12:59файлом нужно поработать. Ну и после

13:01окончания работы вам его всегда

13:03необходимо закрывать. Если вы будете

13:05следовать вот этим вот трём простым

13:06пунктам, то, соответственно, вы спокойно

13:08сможете работать с любыми файлами через

13:10язык Python. У меня же на этом всё. Так

13:12что увидимся с вами в дальнейшем. До

13:14скорых встреч. Пока. M.

More from Школа itProger / Программирование

Recently added transcripts

Browse the whole transcript library

This transcript was generated from the captions YouTube publishes for this video. Get the transcript of any YouTube video atfreeyoutubetranscribe.com, free, unlimited, no sign-up.