#51. Функция open. Чтение данных из файла | Python для начинающих

Поділитися
Вставка
  • Опубліковано 11 жов 2021
  • Обучающий курс: stepik.org/course/100707
    Начинаем работу с файлами. Функция open() для открытия файла. Методы read(), readline() и readlines() для чтения данных из файла. Цикл for для чтения данных. Методы seek() и tell() для работы с файловой позицией. Метод close() для закрытия файла.
    Telegram-канал: t.me/python_selfedu

КОМЕНТАРІ • 47

  • @popopopo8317
    @popopopo8317 2 роки тому +53

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

  • @MrSteviNel
    @MrSteviNel 2 роки тому +27

    Я уже год дружу с питоном, но с удовольствием посмотрел с 7 утра и до обеда весь плейлист, правда на х1.5, ибо тупо освежаю знания и то много нового почерпнуть успел. Ты просто лучший учитель! Спасибо за твою деятельность!

  • @vlad-qx5fu
    @vlad-qx5fu Рік тому +5

    Огромное вам спасибо! Каждый раз говорю что вы большой Молодчина! Благодаря таким людям как вы, может еще существовать наше общество, думающих и рассуждающих!!! Вы достойный пример людям! Merci!!!

  • @donfedor007
    @donfedor007 2 роки тому +6

    Чем больше смотрю курс, тем больше он мне нравится!

  • @SmenSHik
    @SmenSHik Рік тому +4

    Сергей, спасибо за ваши уроки. Невероятно интересно и полезно!

  • @vladimirkulakov8667
    @vladimirkulakov8667 2 роки тому +4

    продолжаем 51 урок!! Один из лучших базовых курсов!

  • @klalyananik
    @klalyananik 2 роки тому +3

    Очень тщательное и подробное объяснение материала. Мне нравится, спасибо автор!

  • @andredru4278
    @andredru4278 4 місяці тому +1

    Спасибо. Узнал новое.

  • @Ruslan501
    @Ruslan501 5 місяців тому +1

    Супер. Очень подробно. Прохожу 3 курс по питону.. узнаю новые вещи 😅
    Спасибо!

  • @elen2662
    @elen2662 Рік тому +1

    Чудесный стишок в уроке) Все понятно объясняете

  • @user-yw6nt4zz4c
    @user-yw6nt4zz4c Рік тому +2

    Сергей, спасибо в очередной раз ;)

  • @kohfbi4
    @kohfbi4 4 місяці тому +1

    спасибо огромное!

  • @soundwaveandfriends
    @soundwaveandfriends 2 роки тому +4

    Иногда, при открытии файла по относительному пути может выскакивать исключение filenotfounderror. Вы проверите все, но файл все равно не откроется по относительному пути. Это связано с тем, что относительный путь расчитывается от рабочего каталога, и рабочий каталог при запуске скрипта необязательно будет там, где лежал скрипт. Например, я пишу свой код в нотепаде++, первый раз у меня все нормально было, писал везде относительные пути, все работало. Перезагрузил комп, запустил скрипт - файлы не открываются. Погуглил 5 минут: можно проверить рабочий катталог функцией os.listdir() из стандартного модуля (прописать в начале import os). Проверил, у меня рабочий каталог почему-то стал папкой с экзешником нотепада. Естественно, там моего файла нет. Вывод: нужно проверять рабочий каталог, если пользуешься относительными путями, и явно менять его, если нужно. Либо пользоваться всегда абсолютными путями

  • @user-fv1ht8fj2z
    @user-fv1ht8fj2z 2 роки тому +2

    Очень доходчиво объясняете! у вас талант! спасибо огромное за ролик!)

  • @user-cc1qp6hd9b
    @user-cc1qp6hd9b 2 роки тому +4

    Единственное что немного перепутали / - это прямой слеш, а вот \ - это обратный слэш

    • @selfedu_rus
      @selfedu_rus  2 роки тому +1

      да, оговорился, если так сказал, спасибо! )

  • @donpatron3631
    @donpatron3631 2 роки тому +2

    Спасибо за видео.

  • @tbassir9076
    @tbassir9076 Рік тому +1

    Всё как всегда великолепно! Да, Вы хороший учитель, что большая редкость! Респектище!!! Единственное, у меня первый невидимый символ не отобразился на выходе в 11:18

    • @selfedu_rus
      @selfedu_rus  Рік тому

      Спасибо! Он вроде отображается только при кодировке utf-8

  • @gayratsaidakhmedov5451
    @gayratsaidakhmedov5451 6 місяців тому +1

    спасибо

  • @jamjam3337
    @jamjam3337 Рік тому +2

    спасибо!

  • @justnothingnet
    @justnothingnet 7 місяців тому +1

    Legend

  • @dzianis0624
    @dzianis0624 2 роки тому +7

    Добрый день, Сергей. Ещё раз спасибо за видео! Только начал изучать Python и почти уже закопался в нем, пока не нашел ваши видео. Какую последовательность ваших курсов посоветуете, т.е. что смотреть после этого курса (конечно из ваших видео). Цель: написание разных программ на питоне. Спасибо за ответ!

    • @selfedu_rus
      @selfedu_rus  2 роки тому +7

      Спасибо! После этого, конечно, ООП (новый курс сейчас делаю, прежний не рекомендую, есть неточности). А после популярные библиотеки, те, что вам будут нужны.

    • @dzianis0624
      @dzianis0624 2 роки тому

      @@selfedu_rus Спасибо!

  • @user-do6tb6ol3g
    @user-do6tb6ol3g 2 роки тому +5

    Добрый день. Расскажите про конструкцию match/case в обновлённом питоне

    • @selfedu_rus
      @selfedu_rus  2 роки тому

      я с ней еще не знаком )) надо будет посмотреть и, наверное, позже добавлю. Спасибо!

  • @ibrahimoglu
    @ibrahimoglu 2 роки тому +3

    👍

  • @impellergimpeller5133
    @impellergimpeller5133 2 роки тому +2

    👍👍👍👍👍

  • @karandalliik
    @karandalliik 2 роки тому +2

    Да.
    Интересно.
    Все ни как не закрою вопрос по автоматическому использованию знаний с добавлением/удалением строк в разных позициях.
    Пока, задач таких мало очень.
    Получается готовится курс на stepik ???

  • @osvab000
    @osvab000 2 роки тому +3

    Как обычно лайкос. Единственное, - при вызове операции tell() - на 32 битной Windows - один символ - 1 байт. Может я ошибаюсь?

    • @selfedu_rus
      @selfedu_rus  2 роки тому

      Конкретно на 32 бит не проверял, но мне кажется это должно зависеть от кодировки текстового файла. У меня в примере UTF-8, которая для первых 127 символов отводит 1 байт (латинские буквы, например), а остальным - 2 байта. Именно поэтому (для русских букв) мы имеем смещения в 2 байта. Проверьте это у себя, будет интересно узнать такие тонкости )

  • @yoursps
    @yoursps 2 роки тому

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

  • @a346341
    @a346341 8 місяців тому +1

    Подскажите такой момент. При попытке создать или прочитать файл по относительному пути, он берет файлы не в папке с файлом '*.py', а по адресу c/users/'учетная запись'. Почему так?

  • @user-xd6lk3nw5x
    @user-xd6lk3nw5x Рік тому +2

    Здравствуйте! Скажите, пожалуйста, функция open всегда открывает новый файл? А если мне надо получить доступ из main к уже существующему файлу, каким образом это можно сделать?

  • @flare3302
    @flare3302 2 роки тому +4

    Первый )

  • @lem0n666
    @lem0n666 Рік тому +2

    \ это обратный слеш
    / это слеш

  • @antonpython8059
    @antonpython8059 Рік тому +2

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

    • @antonpython8059
      @antonpython8059 Рік тому

      Написал свою функцию, которая конвертирует каждую строку из полученного списка строк( readlines() ) - в список , с последующим занесение такого списка в библиотеку. В принципе довольно простой и рабочий код. Сойдет. Один минус, нужен для маркировки один знак, который потом придется сделать не доступным для использования, либо сделать подмену при его использовании.

  • @victorstelmashchuk4840
    @victorstelmashchuk4840 2 роки тому +4

    Это в винде слеш обратный. А в юниксах - обычный. :)

  • @user-fz1yu2qv8f
    @user-fz1yu2qv8f Рік тому +2

    Похоже буду 3ий раз пересматривать видео. Не понимаю как никого вопросов никаких не возникает. Видимо не стремятся все разобрать детально. Потому что я замечаю странное поведение при импортированинии пакета.

  • @MrKim-pt2vm
    @MrKim-pt2vm Рік тому

    Допустим у меня в текст из трёх абзацев, как их поместить каждый в свой список, а каждое предложение в строку?

  • @GaydayAV
    @GaydayAV 2 роки тому +1

    / - slash
    \ - backslash
    Not vice versa.

  • @qwerty0xD52
    @qwerty0xD52 2 роки тому

    не работает

  • @nazi424
    @nazi424 6 місяців тому

    def create_entry():
    title = input("Введіть заголовок: ")
    text = input("Введіть текст: ")
    return f"{title}, {text}
    "
    def save_entry(entries, file_name="notes.txt"):
    with open(file_name, "w") as file: #as - надає псевдонім (створює силку для роботи з об'єктом)
    file.writelines(entries)
    def delet(entries):
    try:
    index_remove = int(input("Який список видалити: "))
    removed_entry = entries.pop(index_remove - 1)
    print(f"Список {removed_entry}, був видалений")
    except ValueError and IndexError:
    print("Список не знайден")
    def main():
    entries = []
    try:
    with open("notes.txt", "r") as file:
    entries = file.readlines()
    except FileNotFoundError:
    print("Файл не знайдено")

    while True:
    print("1. Створити запис")
    print("2. Переглянути записи")
    print("3. Зберегти та вийти")
    print("4. Видалити запис")
    choice = input("Виберіть функцію: ")
    if choice == "1":
    n_create = create_entry()
    entries.append(n_create)
    elif choice == "2":
    for index, entry in enumerate(entries, 1):
    print(f"{index}. {entry}")
    elif choice == "3":
    save_entry(entries)
    print("Записи збережено. Дякую за використання")
    elif choice == "4":
    delet(entries)

    if __name__ == "__main__": #це використовується, щоб переконатисящо код запускається тільки тоді,
    #коли він викликається напряму, а не імпортується в інший модуль.
    main()
    жесть, я не впевнений, що зможу повторити цей код навіть з 10 спроби -_-. Насправді with open дуже важка тема, б оможна легко заплутатися

    • @nazi424
      @nazi424 6 місяців тому

      п.с повторив, хоча й не без допомоги чату гпт

  • @illiukhin
    @illiukhin 2 роки тому +2

    спасибо