Файловый ввод вывод питон

Файловый ввод вывод питон

В данной статье мы рассмотрим встроенные средства python для работы с файлами: открытие / закрытие, чтение и запись.

Итак, начнем. Прежде, чем работать с файлом, его надо открыть. С этим замечательно справится встроенная функция open:

У функции open много параметров, они указаны в статье "Встроенные функции", нам пока важны 3 аргумента: первый, это имя файла. Путь к файлу может быть относительным или абсолютным. Второй аргумент, это режим, в котором мы будем открывать файл.

Режим Обозначение
‘r’ открытие на чтение (является значением по умолчанию).
‘w’ открытие на запись, содержимое файла удаляется, если файла не существует, создается новый.
‘x’ открытие на запись, если файла не существует, иначе исключение.
‘a’ открытие на дозапись, информация добавляется в конец файла.
‘b’ открытие в двоичном режиме.
‘t’ открытие в текстовом режиме (является значением по умолчанию).
‘+’ открытие на чтение и запись

Режимы могут быть объединены, то есть, к примеру, ‘rb’ — чтение в двоичном режиме. По умолчанию режим равен ‘rt’.

И последний аргумент, encoding, нужен только в текстовом режиме чтения файла. Этот аргумент задает кодировку.

Чтение из файла

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

Первый — метод read, читающий весь файл целиком, если был вызван без аргументов, и n символов, если был вызван с аргументом (целым числом n).

Ещё один способ сделать это — прочитать файл построчно, воспользовавшись циклом for:

Запись в файл

Теперь рассмотрим запись в файл. Попробуем записать в файл вот такой вот список:

Откроем файл на запись:

Запись в файл осуществляется с помощью метода write:

Для тех, кто не понял, что это за цифры, поясню: метод write возвращает число записанных символов.

После окончания работы с файлом его обязательно нужно закрыть с помощью метода close:

Теперь попробуем воссоздать этот список из получившегося файла. Откроем файл на чтение (надеюсь, вы поняли, как это сделать?), и прочитаем строки.

Мы получили тот же список, что и был. В более сложных случаях (словарях, вложенных кортежей и т. д.) алгоритм записи придумать сложнее. Но это и не нужно. В python уже давно придумали средства, такие как pickle или json, позволяющие сохранять в файле сложные структуры.

лабораторные работы и задачи по программированию и информатике, егэ по информатике

Файлы в Python

В целом различают два типа файлов (и работы с ними):

  • текстовые файлы со строками неопределенной длины;
  • двоичные (бинарные) файлы (хранящие коды таких данных, как, например, рисунки, звуки, видеофильмы);
  1. открытие файла;
    • режим чтения,
    • режим записи,
    • режим добавления данных.
    • работа с файлом;
    • закрытие файла.

    В python открыть файл можно с помощью функции open с двумя параметрами:

    • имя файла (путь к файлу);
    • режим открытия файла:
    • «r» – открыть на чтение,
    • «w» – открыть на запись (если файл существует, его содержимое удаляется),
    • «a» – открыть на добавление.

    В коде это выглядит следующим образом:

    Fin = open ( "input.txt" ) Fout = open ( "output.txt", "w" ) # работа с файлами Fout.close() Fin.close()

    Работа с текстовыми файлами в Питон

    • Чтение из файла происходит двумя способами:
      1. построчно с помощью метода readline:

      str1 = Fin.readline() # str1 = 1 str2 = Fin.readline() # str2 = 2

      str = Fin.read() »’ str = 1 2 3 »’

      str = Fin.readline().split() print(str[0]) print(str[1])

      файл input.txt:
      12 17

      1. способ:

      Fin = open ( "D:/input.txt" ) str = Fin.readline().split() x, y = int(str[0]), int(str[1]) print(x+y)

      . x, y = [int(i) for i in s] print(x+y)

      * Функция int преобразует строковое значение в числовое.

      Fout = open ( "D:/out.txt","w" ) Fout.write ("hello")

      Fout.write ( " <:d>+ <:d>= <:d>
      ".format(x, y, x+y) )

      В таком случае вместо шаблонов последовательно подставляются значения параметров метода format (сначала x, затем y, затем x+y).

      Аналогом «паскалевского» eof (если конец файла) является обычный способ использования цикла while или с помощью добавления строк в список:

      while True: str = Fin.readline() if not str: break

      Fin = open ( "input.txt" ) lst = Fin.readlines() for str in lst: print ( str, end = "" ) Fin.close()

      for str in open ( "input.txt" ): print ( str, end = "" )

      • Поскольку в Python работа с массивом осуществляется с помощью структуры список, то количество элементов в массиве заранее определять не нужно.
      • Считывание из файла чисел:

      lst = [] while True: st = Fin.readline() if not st: break lst.append (int(st))

      Fout = open ( "output.txt", "w" ) Fout.write (str(lst)) # функция str преобразует числовое значение в символьное Fout.close()

      for x in lst: Fout.write (str(x)+"
      ") # запись с каждой строки нового числа

      Рассмотрим на примере обработку строковых значений.

      Необходимо записать в текстовый файл сведения о сотрудниках, возраст которых меньше 40.

      Серия контента:

      Этот контент является частью # из серии # статей: Программирование на Python

      Этот контент является частью серии: Программирование на Python

      Следите за выходом новых статей этой серии.

      После изучения классов в Python мы перейдем к работе с файлами и файловой системой. Функции и объекты, описанные в этой главе, позволят вам сохранять данные между вызовами программы, а также обмениваться данными между программами.

      Сегодня мы рассмотрим следующие темы.

      1. Как открыть файл.
      2. Базовые файловые методы.
      3. Стандартный ввод/вывод.
      4. Произвольный доступ.
      5. Построчная работа с файлами.
      6. Закрытие файла.
      7. Итерация.
      8. Pickling.
      9. Бинарные файлы – модуль struct.
      10. Работа с файловой системой.

      1. Как открыть файл

      Открыть файл можно с помощью функции open:

      Функция возвращает файловый объект. Обязателен только первый аргумент. Если остальные параметры отсутствуют, файл будет доступен на чтение. Таблица режимов (mode) функции open:

      ‘b’ – бинарный режим.

      Режим ‘+’ может быть добавлен к остальным режимам. По умолчанию питон открывает файлы в текстовом режиме. Для открытия файла в бинарном режиме на чтение можно добавить ‘rb’. Третий параметр устанавливает размер буферизации при работе с файлом. По умолчанию он выключен, и чтение/запись идет напрямую с диска на диск. Для включения буфера третий параметр должен быть отличным от нуля.

      2. Базовые файловые методы

      В питоне многие объекты являются файлами: стандартный ввод sys.stdin, стандартный вывод sys.stdout, объекты, открываемые функцией urllib.urlopen и т.д.

      3. Стандартный ввод/вывод

      В командной строке можно записать подряд несколько команд, передавая результат работы от одной команды к другой по конвейеру – или по каналу (pipe):

      Первая команда – cat – пишет содержимое текстового файла my_file на стандартный вывод sys.stdout . Вторая команда запускает питоновский файл, который читает стандартный ввод sys.stdin , подсчитывает в нем количество слов и выводит результат:

      Канал – или пайп (pipe) – это конструкция, объединяющая стандартный вывод со стандартным вводом и позволяющая обмениваться данными между двумя командами.

      4. Произвольный доступ

      По умолчанию метод read() читает данные последовательно по порядку, от начала и до конца файла. Для произвольного доступа к файлу есть функция seek:

      offset – смещение в байтах относительно начала файла;

      whence – по умолчанию равен нулю, указывает на то, что смещение берется относительно начала файла.

      Функция tell() возвращает текущую позицию файла.

      5. Построчная работа с файлами

      Обычно мы имеем дело с текстовыми файлами. Прочитать одну строку:

      Функция readline() без параметра читает всю строку, наличие параметра указывает функции максимальное число символов строки, которое будет прочитано. Прочитать все строки и вернуть список строк:

      Записать строки в файл:

      Пример. Прочитать файл и записать его содержимое в другой файл:

      6. Закрытие файла

      Для закрытия файла есть метод close(). Обычно файл закрывается сам после того, как вы выходите из программы, но файлы нужно закрывать вручную по нескольким причинам.

      1. Питон может буферизировать запись в файл ваших данных, что может привести к неожиданным эффектам и возникновению ошибок.
      2. У операционной системы есть ограничение на число одновременно открытых файлов.
      3. При доступе к файлу из разных мест одновременно и на чтение, и на запись необходимо синхронизировать файловые операции. Буферизация записи может привести к тому, что запись уже произошла, а данных в файле еще нет.

      Для полной уверенности в закрытии файла можно использовать блок try/finally:

      Можно также использовать менеджер контекста, который в любом случае закроет файл:

      Если вы все же не хотите закрывать файл, то синхронизировать многопользовательский доступ к файлу на чтение/запись можно с помощью функции flush(), которая актуализирует все операции записи на диск. При этом возможна блокировка файла на чтение.

      7. Итерация

      Итерация по файлу является базовой операцией и имеет множество вариантов. Использование функции read() для байтового чтения:

      Построчное чтение текстовых файлов и функция readline():

      Файл сам может выступать в роли итератора:

      8. Pickling

      Практически любой тип объекта может быть сохранен на диске в любой момент его жизни, а позже прочитан с диска. Для этого есть модуль pickle:

      Здесь есть небольшой нюанс: t1 и t2 будут двумя разными объектами, хотя и идентичными.

      9. Бинарные файлы

      Стандартный модуль struct позволяет преобразовывать объекты в структуры C в виде строк в бинарном формате и обратно. Данные в строке располагаются в соответствии со строкой формата. Эти возможности могут быть использованы для чтения и сохранения в двоичном формате.

      Функции этого модуля:

      Возвращает строку, содержащую значения value1 . упакованные в соответствии с форматом. Количество и тип аргументов должны соответствовать значениям, которые требует строка формата format.

      Распаковывает строку string в соответствии с форматом format и возвращает кортеж объектов.

      Возвращает размер структуры (т.е. длину строки), соответствующей формату format.

      Таблица основных форматов

      Перед символом формата может идти число, обозначающее количество повторений. Например, строка формата ‘4h’ полностью эквивалентна строке ‘hhhh’. Символы пропуска между символами формата игнорируются, однако символы пропуска между числом и символом формата не допускаются.

      Число перед символом формата ‘s’ интерпретируется как длина строки, а не число повторений. То есть ’10s’ обозначает строку из 10 символов, в то время как ’10c’ – 10 раз по одному символу.

      Можно изменить порядок следования байтов вручную:

      В следующем примере мы упаковываем в структуру два числа – целое и float, строку из пяти символов, сохраняем в бинарный файл, а потом извлекаем из файла:

      10. Работа с файловой системой

      Стандартный модуль os имеет интерфейс работы с файловой системой. Каждая программа имеет текущий каталог. Функция os.getcwd возвращает текущий каталог:

      Проверить наличие файла в текущем каталоге:

      Вывести список файлов и подкаталогов для данного каталога:

      Следующий пример рекурсивно выводит список всех файлов и подкаталогов для данного каталога:

      В следующем примере мы получим статистическую информацию о текущем каталоге: общий размер каталога в байтах, число файлов, число подкаталогов. Стандартная функция os.path.walk имеет три параметра: каталог, пользовательская функция, список для подсчета:

      В следующем примере сделана интерпретация системной утилиты grep. В текущем каталоге будут найдены файлы с питоновским расширением, в которых будет найдена поисковая строка ‘import os’:

      Заключение

      Сегодня мы узнали, что файловые объекты поддерживают чтение/запись. Для корректной работы с данными файл нужно программно закрывать. Файлы можно открывать в различных режимах. Стандартный ввод/вывод – это тоже файлы. Можно построчно читать и писать в файл. К файлам можно применять байтовую и построчную итерацию. Любые объекты могут быть сохранены на диске в произвольный момент времени в произвольном состоянии и позже восстановлены путем считывания с диска. Чтение/запись можно выполнять в бинарном режиме, соблюдая совместимость со структурами на языке си. Интерфейс с операционной системой позволяет писать компактные программы, дополняющие стандартные утилиты операционной системы.

      Приведенные примеры проверены на версии питона 2.6.

      Ссылка на основную публикацию
      Удобное компьютерное кресло отзывы
      В общем, надоело мне с ноутбуком на кровати валяться, спину портить. Стол есть, 74см высотой. Сейчас сижу на офисном стуле,...
      Тест эксель на собеседовании
      Если вы хоть раз пытались устроиться на работу или же работаете на должности, в круг обязанностей которой входит принятие людей...
      Тестирование cd и dvd дисков
      В этой статье я опишу программу тест Nero CD DVD Speed, которая разработана компанией "Nero Softwsre AG". С помощью программы...
      Удобный сайт для просмотра фильмов
      Некоторые онлайн-кинотеатры радуют лицензионными бесплатными фильмами, однако за лучший контент придётся платить. В подборке Лайфхакера — несколько хороших сервисов с...
      Adblock detector