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

แชร์
ฝัง
  • เผยแพร่เมื่อ 17 พ.ย. 2024

ความคิดเห็น • 51

  • @popopopo8317
    @popopopo8317 3 ปีที่แล้ว +56

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

  • @MrSteviNel
    @MrSteviNel 3 ปีที่แล้ว +29

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

  • @vlad-qx5fu
    @vlad-qx5fu ปีที่แล้ว +6

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

  • @SmenSHik
    @SmenSHik ปีที่แล้ว +5

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

  • @vladimirkulakov8667
    @vladimirkulakov8667 2 ปีที่แล้ว +4

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

  • @Ruslan501
    @Ruslan501 10 หลายเดือนก่อน +1

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

  • @donfedor007
    @donfedor007 3 ปีที่แล้ว +6

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

  • @elen2662
    @elen2662 ปีที่แล้ว +2

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

  • @klalyananik
    @klalyananik 3 ปีที่แล้ว +3

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

  • @soundwaveandfriends
    @soundwaveandfriends 3 ปีที่แล้ว +5

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

  • @tbassir9076
    @tbassir9076 ปีที่แล้ว +1

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

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว

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

  • @АлексейСелезнев-т2б
    @АлексейСелезнев-т2б 2 ปีที่แล้ว +2

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

  • @АлександраМм
    @АлександраМм 2 ปีที่แล้ว +2

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

  • @ВикторияТрутько-ж2ъ
    @ВикторияТрутько-ж2ъ 3 ปีที่แล้ว +5

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

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว +1

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

  • @margojazny
    @margojazny 3 ปีที่แล้ว +2

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

  • @andredru4278
    @andredru4278 9 หลายเดือนก่อน +1

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

  • @jamjam3337
    @jamjam3337 ปีที่แล้ว +2

    спасибо!

  • @kohfbi4
    @kohfbi4 9 หลายเดือนก่อน +1

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

  • @illiukhin
    @illiukhin 3 ปีที่แล้ว +2

    спасибо

  • @dzianis0624
    @dzianis0624 3 ปีที่แล้ว +7

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

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว +7

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

    • @dzianis0624
      @dzianis0624 3 ปีที่แล้ว

      @@selfedu_rus Спасибо!

  • @yoursps
    @yoursps 2 ปีที่แล้ว

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

  • @ДенисЕрмолаев-ц1щ
    @ДенисЕрмолаев-ц1щ 3 ปีที่แล้ว +5

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

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว

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

  • @osvab000
    @osvab000 3 ปีที่แล้ว +3

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

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว

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

  • @a346341
    @a346341 ปีที่แล้ว +1

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

  • @СергейМаксимов-р7н
    @СергейМаксимов-р7н 2 ปีที่แล้ว +2

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

  • @ayqikz
    @ayqikz ปีที่แล้ว +1

    Legend

  • @karandalliik
    @karandalliik 3 ปีที่แล้ว +2

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

  • @ibrahimoglu
    @ibrahimoglu 3 ปีที่แล้ว +3

    👍

  • @impellergimpeller5133
    @impellergimpeller5133 3 ปีที่แล้ว +2

    👍👍👍👍👍

  • @VVS_47
    @VVS_47 4 หลายเดือนก่อน +1

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

  • @antonpython8059
    @antonpython8059 2 ปีที่แล้ว +2

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

    • @antonpython8059
      @antonpython8059 2 ปีที่แล้ว

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

  • @flare3302
    @flare3302 3 ปีที่แล้ว +4

    Первый )

  • @lem0n666
    @lem0n666 ปีที่แล้ว +2

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

  • @IrinaBod
    @IrinaBod หลายเดือนก่อน +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()

  • @аноним-х3ш
    @аноним-х3ш 2 ปีที่แล้ว +2

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

  • @darko9361
    @darko9361 3 หลายเดือนก่อน +1

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

  • @AndriiHaidai
    @AndriiHaidai 2 ปีที่แล้ว +1

    / - slash
    \ - backslash
    Not vice versa.

  • @MrKim-pt2vm
    @MrKim-pt2vm 2 ปีที่แล้ว

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

  • @victorstelmashchuk4840
    @victorstelmashchuk4840 3 ปีที่แล้ว +4

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

  • @qwerty0xD52
    @qwerty0xD52 2 ปีที่แล้ว

    не работает

  • @jaksonmillka
    @jaksonmillka 2 หลายเดือนก่อน

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

  • @nazi424
    @nazi424 11 หลายเดือนก่อน

    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 11 หลายเดือนก่อน

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

  • @gayratsaidakhmedov5451
    @gayratsaidakhmedov5451 11 หลายเดือนก่อน +1

    спасибо