Найти в Дзене
it-ить или не it-ить...

Открываем файлы в Python - начнем с текстовых файлов

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

И уже свершившийся факт - КЕГЭ - предоставил обучающимся возможность спокойно решать эту (и не только) задачу уже за компьютером, проверяя свои тезисы на практике. Благодаря КЕГЭ, в некотором контексте, сдача информатики стала намного проще.

Чем же примечательна эта задача? Мы ее сейчас не будем решать. Но предлагаю просто посмотреть, на какие ключевые моменты можно разделить решение в целом. И чтение данных из внешнего файла занимает тут довольно важное место.

В качестве примера для проб можно использовать файлы из заданий 27 ЕГЭ по информатике на сайте К. Полякова - https://kpolyakov.spb.ru/school/ege/gen.php?action=viewAllEgeNo&egeId=27&cat161=on
-2

Приведенный пример создает файловый объект, который связывается с внешним файлом, расположенным в той же папке, связь в режиме чтения ('r' - read). Метод close() закрывает открытый файл.

С файлами, в которых много данных, также уточню, с текстовыми файлами, очень удобно работать построчно. Берем из файла строку за строкой и обрабатываем их.

Когда взята строка целиком, то она берется "целиком" - в том числе с символом переноса строки в конце.

Работая с файлами из 27 задачи КЕГЭ по информатике будет удобно, а также целесообразно воспользоваться следующими методами строк:

  • split()
  • strip()
  • find()
  • rfind()
-3

Пример кода выше демонстрирует способ считывания данных из нашего файла построчно (ну с учетом того обстоятельства, что пример выполняет только одну итерацию - break - не прогонять же в коде примера все 60 тыс. значений).

В некоторых задачах удобнее работать с данными в текстовом формате, а в некоторых, и в этом тоже, удобнее работать с числами.

Обратим внимание на переменную n - она принимает из файлового объекта fin данные только из одной строки - readline() - первой строки. Мы получили даже всю первую строку, а потом полученная строка преобразована в целое число - int().

Второй вариант - метод read(). Если можете его не использовать - лучше не использовать. Этот метод считывает весь файл целиком в файловый объект - если файл большой, то он весь окажется в оперативке.

-4

Хотя у этого метода есть параметр, который определяет сколько знаков забираем из файла:

Считано 100 символов из файла.
Считано 100 символов из файла.

Есть еще один способ загнать все строки текстового файла в один контейнер - readlines() - этот метод создаст список из строк нашего файла.

Если текстовый файл относительно небольшой, то при решении учебных заданий это даже удобно: открыть файл, все данные считываем в список, закрываем файл. Далее просто работаем с данными в списке.

-6

Будут комментарии - пишите!