#51. Функция open. Чтение данных из файла | Python для начинающих
Вставка
- Опубліковано 11 жов 2021
- Обучающий курс: stepik.org/course/100707
Начинаем работу с файлами. Функция open() для открытия файла. Методы read(), readline() и readlines() для чтения данных из файла. Цикл for для чтения данных. Методы seek() и tell() для работы с файловой позицией. Метод close() для закрытия файла.
Telegram-канал: t.me/python_selfedu
Нифига , хватает же тебе энтузиазма снимать это. Не плохо не плохо. Все то же самое как в платных курсах. Не бросай это дело . Многим помогаешь. Единственное что ты не можешь дать людям ... Это только диплом😀
Я уже год дружу с питоном, но с удовольствием посмотрел с 7 утра и до обеда весь плейлист, правда на х1.5, ибо тупо освежаю знания и то много нового почерпнуть успел. Ты просто лучший учитель! Спасибо за твою деятельность!
Огромное вам спасибо! Каждый раз говорю что вы большой Молодчина! Благодаря таким людям как вы, может еще существовать наше общество, думающих и рассуждающих!!! Вы достойный пример людям! Merci!!!
Чем больше смотрю курс, тем больше он мне нравится!
Сергей, спасибо за ваши уроки. Невероятно интересно и полезно!
продолжаем 51 урок!! Один из лучших базовых курсов!
Очень тщательное и подробное объяснение материала. Мне нравится, спасибо автор!
Спасибо. Узнал новое.
Супер. Очень подробно. Прохожу 3 курс по питону.. узнаю новые вещи 😅
Спасибо!
Чудесный стишок в уроке) Все понятно объясняете
Сергей, спасибо в очередной раз ;)
спасибо огромное!
Иногда, при открытии файла по относительному пути может выскакивать исключение filenotfounderror. Вы проверите все, но файл все равно не откроется по относительному пути. Это связано с тем, что относительный путь расчитывается от рабочего каталога, и рабочий каталог при запуске скрипта необязательно будет там, где лежал скрипт. Например, я пишу свой код в нотепаде++, первый раз у меня все нормально было, писал везде относительные пути, все работало. Перезагрузил комп, запустил скрипт - файлы не открываются. Погуглил 5 минут: можно проверить рабочий катталог функцией os.listdir() из стандартного модуля (прописать в начале import os). Проверил, у меня рабочий каталог почему-то стал папкой с экзешником нотепада. Естественно, там моего файла нет. Вывод: нужно проверять рабочий каталог, если пользуешься относительными путями, и явно менять его, если нужно. Либо пользоваться всегда абсолютными путями
Очень доходчиво объясняете! у вас талант! спасибо огромное за ролик!)
Единственное что немного перепутали / - это прямой слеш, а вот \ - это обратный слэш
да, оговорился, если так сказал, спасибо! )
Спасибо за видео.
Всё как всегда великолепно! Да, Вы хороший учитель, что большая редкость! Респектище!!! Единственное, у меня первый невидимый символ не отобразился на выходе в 11:18
Спасибо! Он вроде отображается только при кодировке utf-8
спасибо
спасибо!
Legend
Добрый день, Сергей. Ещё раз спасибо за видео! Только начал изучать Python и почти уже закопался в нем, пока не нашел ваши видео. Какую последовательность ваших курсов посоветуете, т.е. что смотреть после этого курса (конечно из ваших видео). Цель: написание разных программ на питоне. Спасибо за ответ!
Спасибо! После этого, конечно, ООП (новый курс сейчас делаю, прежний не рекомендую, есть неточности). А после популярные библиотеки, те, что вам будут нужны.
@@selfedu_rus Спасибо!
Добрый день. Расскажите про конструкцию match/case в обновлённом питоне
я с ней еще не знаком )) надо будет посмотреть и, наверное, позже добавлю. Спасибо!
👍
👍👍👍👍👍
Да.
Интересно.
Все ни как не закрою вопрос по автоматическому использованию знаний с добавлением/удалением строк в разных позициях.
Пока, задач таких мало очень.
Получается готовится курс на stepik ???
Как обычно лайкос. Единственное, - при вызове операции tell() - на 32 битной Windows - один символ - 1 байт. Может я ошибаюсь?
Конкретно на 32 бит не проверял, но мне кажется это должно зависеть от кодировки текстового файла. У меня в примере UTF-8, которая для первых 127 символов отводит 1 байт (латинские буквы, например), а остальным - 2 байта. Именно поэтому (для русских букв) мы имеем смещения в 2 байта. Проверьте это у себя, будет интересно узнать такие тонкости )
аллилуйя!!!! спасибо бро, за объяснения работы с путями, а то везде показывают обращение к файлу в корневой папке... ктож знал что нельзя просто скопировать путь, а надо или слеши добавлять или заменять на обратный
Подскажите такой момент. При попытке создать или прочитать файл по относительному пути, он берет файлы не в папке с файлом '*.py', а по адресу c/users/'учетная запись'. Почему так?
Здравствуйте! Скажите, пожалуйста, функция open всегда открывает новый файл? А если мне надо получить доступ из main к уже существующему файлу, каким образом это можно сделать?
Первый )
\ это обратный слеш
/ это слеш
Как в файл сохранить несколько списков отдельно друг от друга, с дальнейшим их чтением и конвертацией обратно в list.
Написал свою функцию, которая конвертирует каждую строку из полученного списка строк( readlines() ) - в список , с последующим занесение такого списка в библиотеку. В принципе довольно простой и рабочий код. Сойдет. Один минус, нужен для маркировки один знак, который потом придется сделать не доступным для использования, либо сделать подмену при его использовании.
Это в винде слеш обратный. А в юниксах - обычный. :)
Похоже буду 3ий раз пересматривать видео. Не понимаю как никого вопросов никаких не возникает. Видимо не стремятся все разобрать детально. Потому что я замечаю странное поведение при импортированинии пакета.
Допустим у меня в текст из трёх абзацев, как их поместить каждый в свой список, а каждое предложение в строку?
/ - slash
\ - backslash
Not vice versa.
не работает
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 дуже важка тема, б оможна легко заплутатися
п.с повторив, хоча й не без допомоги чату гпт
спасибо