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

Поделиться
HTML-код
  • Опубликовано: 2 янв 2025

Комментарии • 51

  • @popopopo8317
    @popopopo8317 3 года назад +56

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

  • @MrSteviNel
    @MrSteviNel 3 года назад +30

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

  • @vlad-qx5fu
    @vlad-qx5fu Год назад +6

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

  • @SmenSHik
    @SmenSHik Год назад +5

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

  • @vladimirkulakov8667
    @vladimirkulakov8667 3 года назад +4

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

  • @donfedor007
    @donfedor007 3 года назад +6

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

  • @elen2662
    @elen2662 Год назад +2

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

  • @klalyananik
    @klalyananik 3 года назад +3

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

  • @Ruslan501
    @Ruslan501 11 месяцев назад +1

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

  • @АлексейСелезнев-т2б
    @АлексейСелезнев-т2б 2 года назад +2

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

  • @soundwaveandfriends
    @soundwaveandfriends 3 года назад +6

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

  • @tbassir9076
    @tbassir9076 Год назад +1

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

    • @selfedu_rus
      @selfedu_rus  Год назад

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

  • @АлександраМм
    @АлександраМм 2 года назад +2

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

  • @darko9361
    @darko9361 4 месяца назад +2

    1:32 хахах, папка "images", файл "images.TXT" 😄
    где то подстава😋

  • @margojazny
    @margojazny 3 года назад +2

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

  • @ВикторияТрутько-ж2ъ
    @ВикторияТрутько-ж2ъ 3 года назад +5

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

    • @selfedu_rus
      @selfedu_rus  3 года назад +1

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

  • @andredru4278
    @andredru4278 10 месяцев назад +1

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

  • @jamjam3337
    @jamjam3337 Год назад +2

    спасибо!

  • @kohfbi4
    @kohfbi4 11 месяцев назад +1

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

  • @illiukhin
    @illiukhin 3 года назад +2

    спасибо

  • @dzianis0624
    @dzianis0624 3 года назад +7

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

    • @selfedu_rus
      @selfedu_rus  3 года назад +7

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

    • @dzianis0624
      @dzianis0624 3 года назад

      @@selfedu_rus Спасибо!

  • @ДенисЕрмолаев-ц1щ
    @ДенисЕрмолаев-ц1щ 3 года назад +5

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

    • @selfedu_rus
      @selfedu_rus  3 года назад

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

  • @СергейМаксимов-р7н
    @СергейМаксимов-р7н 2 года назад +2

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

  • @yoursps
    @yoursps 2 года назад

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

  • @karandalliik
    @karandalliik 3 года назад +2

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

  • @a346341
    @a346341 Год назад +1

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

  • @impellergimpeller5133
    @impellergimpeller5133 3 года назад +2

    👍👍👍👍👍

  • @osvab000
    @osvab000 3 года назад +3

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

    • @selfedu_rus
      @selfedu_rus  3 года назад

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

  • @ibrahimoglu
    @ibrahimoglu 3 года назад +3

    👍

  • @antonpython8059
    @antonpython8059 2 года назад +2

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

    • @antonpython8059
      @antonpython8059 2 года назад

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

  • @ayqikz
    @ayqikz Год назад +1

    Legend

  • @flare3302
    @flare3302 3 года назад +4

    Первый )

  • @lem0n666
    @lem0n666 2 года назад +2

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

  • @timohahahehehe
    @timohahahehehe 2 года назад +2

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

  • @victorstelmashchuk4840
    @victorstelmashchuk4840 3 года назад +4

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

  • @IrinaBod
    @IrinaBod 3 месяца назад +1

    так а если открывать с with open то закрывается автоматически и это написано даже в документации и книгах что такой метод более желателен, так как меньше вероятности ошибиться забыв закрыть файл, Так зачем же тут дается объяснение с "насильственным" закрытием а не автоматическим??? Ну или, по крайней мере, можно же было хотя бы рассказать о ключе WITH
    Вот скопировала с Python org с официальной документации:
    It is good practice to use the with keyword when dealing with file objects. The advantage is that the file is properly closed after its suite finishes, even if an exception is raised at some point.
    with open('workfile', encoding="utf-8") as f:
    read_data = f.read()

  • @MrKim-pt2vm
    @MrKim-pt2vm 2 года назад

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

  • @VVS_47
    @VVS_47 6 месяцев назад +1

    Стишок прикольный

  • @AndriiHaidai
    @AndriiHaidai 2 года назад +1

    / - slash
    \ - backslash
    Not vice versa.

  • @qwerty0xD52
    @qwerty0xD52 2 года назад

    не работает

  • @jaksonmillka
    @jaksonmillka 3 месяца назад

    стишок, немножко националистический )

  • @nazi424
    @nazi424 Год назад

    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 Год назад

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

  • @gayratsaidakhmedov5451
    @gayratsaidakhmedov5451 Год назад +1

    спасибо