🐍 Python  ·  20 вопросов  ·  ~45 мин  ·  ⏱ Таймер 45:00  ·  Лёгкий  · 

Файлы и пути

Учит безопасно открывать файлы, выбирать режим, работать с кодировкой и pathlib. Задания связывают открытие файла с темами «Режимы», «Кодировка» и «Пути pathlib»: придётся читать код, искать причину сбоя и выбирать решение по его поведению. Все задания рассчитаны на CPython 3.12; отличия других реализаций или версий учитываются только там, где это прямо оговорено.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Версия: CPython 3.12. Выберите один ответ из четырёх. На 20 вопросов отведено не меньше 40 минут; код лучше читать построчно. После завершения вы увидите общий процент, четыре тематические шкалы и объяснение каждого ответа.
Вопрос 1 из 20
В граничном сценарии файл уже существует. Какой режим открытия должен отказаться от перезаписи и поднять `FileExistsError`?
Вопрос 2 из 20
Что произойдёт с содержимым?
Python
from pathlib import Path
p = Path("example.txt")
# В файле было: old
p.write_text("new", encoding="utf-8")
print(p.read_text(encoding="utf-8"))
Вопрос 3 из 20
Как обработается ошибка внутри with?
Python
class Resource:
    def __enter__(self):
        print("open")
        return self
    def __exit__(self, exc_type, exc, tb):
        print("close", exc_type.__name__ if exc_type else None)
        return False

with Resource():
    raise ValueError("bad")
Вопрос 4 из 20
Что вернёт pathlib?
Python
from pathlib import Path
p = Path("archive.tar.gz")
print(p.name, p.stem, p.suffix, p.suffixes)
Вопрос 5 из 20
Почему `with open(...) as f` предпочтительнее ручного `f = open(...); ...; f.close()`?
Вопрос 6 из 20
Что напечатает чтение строк?
Python
from io import StringIO
f = StringIO("a\nb\n")
first = f.readline()
rest = f.read()
print(repr(first), repr(rest))
Вопрос 7 из 20
Как дописать текст в конец существующего файла, не стирая его?
Вопрос 8 из 20
Какой путь получится независимо от разделителя системы?
Python
from pathlib import Path
p = Path("data") / "reports" / "2026.csv"
print(p.parts)
Вопрос 9 из 20
Файловый объект уже закрыт, но код вызывает `read()`. Какая ошибка возникнет на этой операции?
Python
from io import StringIO
f = StringIO("abc")
f.close()
print(f.read())
Вопрос 10 из 20
Как изменится позиция?
Python
from io import StringIO
f = StringIO("abcdef")
print(f.read(2), f.tell())
f.seek(1)
print(f.read(3), f.tell())
Вопрос 11 из 20
Файл может быть очень большим. Как обработать его построчно без загрузки целиком?
Вопрос 12 из 20
Что выведет абсолютность пути?
Python
from pathlib import PurePosixPath
p = PurePosixPath("/tmp") / ".." / "var"
print(p.is_absolute(), p)
Вопрос 13 из 20
Как работает режим a+?
Вопрос 14 из 20
Что вернёт splitlines?
Python
text = "a\r\nb\nc"
print(text.splitlines(), text.splitlines(keepends=True))
Вопрос 15 из 20
Нужно спроектировать переносимую сборку пути из каталога и имени файла. Какое решение выбрать вместо ручной склейки через `"/"`?
Вопрос 16 из 20
Что произойдёт при decode с errors="replace"?
Python
data = b"ok\xffend"
print(data.decode("utf-8", errors="replace"))
Вопрос 17 из 20
Запись конфигурации прерывается после сохранения только части данных. Какое исправление защищает старый файл в этом граничном сценарии?
Вопрос 18 из 20
Что выведет относительный путь?
Python
from pathlib import PurePosixPath
p = PurePosixPath("/srv/app/data/report.csv")
print(p.relative_to("/srv/app"))
Вопрос 19 из 20
Чем двоичный режим отличается от текстового?
Вопрос 20 из 20
Какой текст останется после truncate?
Python
from io import StringIO
f = StringIO("abcdef")
f.seek(3)
f.truncate()
f.seek(0)
print(f.read())

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу