Python Урок 9. Работа с файлами

На уроке рассматривается работа с файлами в Питон: текстовые и бинарные файлы, запись в файл и чтение из файла

Файлы в Python

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

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

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

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

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

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

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

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

      str1 = Fin.readline() # str1 = 1
      str2 = Fin.readline() # str2 = 2
    3. метод read читает данные до конца файла:
    4. файл input.txt:
      1
      2
      3

      str = Fin.read() 
      ''' 
      str = 1
      2
      3
      '''
  • Для получения отдельных слов строки используется метод split, который по пробелам разбивает строку на составляющие компоненты:
  • str = Fin.readline().split()
    print(str[0])
    print(str[1])

    Пример:
    В файле записаны два числа. Необходимо суммировать их.

    файл input.txt:
    12 17

    ответ:
    27


    ✍ Решение:
     

    1. способ:
    2. Fin = open ( "D:/input.txt" ) 
      str = Fin.readline().split()
      x, y = int(str[0]), int(str[1])
      print(x+y)
    3. способ:
    4. ...
      x, y = [int(i) for i in s]
      print(x+y)

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

  • В python метод write служит для записи строки в файл:
  • Fout = open ( "D:/out.txt","w" ) 
    Fout.write ("hello")
  • Запись в файл можно осуществлять, используя определенный
    шаблон вывода
    . Например:
  • Fout.write ( "{:d} + {:d} = {:d}\n".format(x, y, x+y) )

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

  • Аналогом «паскалевского» eof (если конец файла) является обычный способ использования цикла while или с помощью добавления строк в список:
    1. while True: 
         str = Fin.readline() 
         if not str: break
    2. Fin = open ( "input.txt" ) 
      lst = Fin.readlines() 
      for str in lst: 
          print ( str, end = "" ) 
      Fin.close()
    3. подходящий способ для Python:
    4. for str in open ( "input.txt" ): 
         print ( str, end = "" )

Задание Python 9_1:
Считать из файла input.txt 10 чисел (числа записаны через пробел). Затем записать их произведение в файл output.txt.

Рассмотрим пример работы с массивами.
Пример:
Считать из текстового файла числа и записать их в другой текстовый файл в отсортированном виде.

✍ Решение:
 

  • Поскольку в 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)+"\n") # запись с каждой строки нового числа

Задание Python 9_2:
В файле записаны в целые числа. Найти максимальное и минимальное число и записать в другой файл.

Задание Python 9_3:
В файле записаны в столбик целые числа. Отсортировать их по возрастанию суммы цифр и записать в другой файл.

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

Пример:
В файл записаны сведения о сотрудниках некоторой фирмы в виде:

Иванов 45 бухгалтер

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


✍ Решение:
 

  • Поскольку сведения записаны в определенном формате, т.е. вторым по счету словом всегда будет возраст, то будем использовать метод split, который разделит слова по пробелам. Под номером 1 в списке будет ити возраст:
  • st = Fin.readline() 
    data = st.split() 
    stAge = data[1] 
    intAge = int(stAge)
  • Более короткая запись будет выглядеть так:
  • st = Fin.readline() 
    intAge = int(st.split()[1])
  • Программа выглядит так:
  • while True: 
      st = Fin.readline() 
      if not s: break 
      intAge = int (st.split()[1])
  • Но лучше в стиле Python:
  • for st in open ( "input.txt" ): 
       intAge = int (st.split()[1]) 
       if intAge < 5: 
          Fout.write (st)

Задание Python 9_4:
В файл записаны сведения о детях детского сада:

Иванов иван 5 лет

Необходимо записать в текстовый файл самого старшего и самого младшего.

Поделитесь уроком с коллегами и друзьями:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*
*

Вставить формулу как
Блок
Строка
Дополнительные настройки
Цвет формулы
Цвет текста
#333333
Используйте LaTeX для набора формулы
Предпросмотр
\({}\)
Формула не набрана
Вставить