ПЗ-12 Использование файлов

1 Цель занятия изучить методику работы с файлами.

2 Краткие методические указания.Файлами называют последовательности данных, которые сохраняются на внешних носителях данных [1-157]. Доступ к этим данным позволяет прочитать данные из файла или записать данные в файл. Типичными файловыми устрйствами являтся жесткий диски, флеш память, лазерные диски и тому подобные устройства. Прежде в качестве внешних запоминающих устройств использовали магнитные ленты. Доступ к данным на этих устройствах реализовался последовательно. Для того, чтобы прочитать данные на ленте надо было перемотать ее в нужное место (прочитать предшествующие данные). Современные внешние устройства позволяют реализовать и произвольный доступ, но последовательный доступ для внешних устройств сохранен. Данные на внешних устройствах записаны порциями, которые размещаютса на носителе информации в файлах – именованных порциях данных. Каждый файл имеет имя, которое состоит из собственно имени и расширения имени, которое позволяет разделять файлы по типам данных. Имя файлу дается создателем файла в процессе создания файла, говорят открытия файла. После завершения работы с файлом его надо закрыть. Только после этого данные размещенные в файле окажутся на внешнем носителе. До этого работа с файлом может проводиться с использованием некоторого заменителя файла. Работа с файлами настолько унифицирована, что некоторые устройства, которые не являются устройствами хранения информации взаимодействуют с процессором как файлы – последовательно принимая потоки данных или передавая потоки данных. К таким устройствам относится консоль (клавиатура и дисплей). Клавиатура поставляет поток символов, а дисплей отображает на экране поток символов. Каналы связи принимают потоки данных для передачи или передают процессору полученные из канала данные. Эти потоки данных в консоли и каналах связи организованы как файлы. Поэтому важно изучить принципы работы с файлами. Последовательность операторов, показанная ниже создает файл

>>> f=open("data.txt","w")

>>> f.write("Этот текст запишем в файл")

>>> f.close()

>>>

с именем data.txt и записывает в него строку "Этот текст запишем в файл". Если после этого вновь открыть файл data.txt, то из него можно прочитать записанный текст.

>>> f=open("data.txt")

>>> f.read()

'Этот текст запишем в файл'

>>>

Файл data.txt размещается в той директории, в которой работает программа. Следует заметить, что в интерактивном режиме после выполнения чтения или записи файл закрывается. Файлы, по умолчанию, имеют текстовый формат [2]. Если к обозначению режима добавить букву b, то данные рассматриваются как двоичные коды, представленные байтами. В языке Питон записать строку в байтовом формате нельзя. Это демонстрирует следующий пример.

>>> f=open("data.txt","wb")

>>> f.write("Этот текст запишем в файл")

Traceback (most recent call last):

File "<pyshell#1>", line 1, in <module>

f.write("Этот текст запишем в файл")

TypeError: a bytes-like object is required, not 'str'

>>>

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

>>> import pickle

>>> L=[23,2.3,'Это строка.',4+6j]

>>> f=open("Lst_dt.dt","wb")#Открываем бинарный файл на запись

>>> pickle.dump(L,f) #Сохраняем список L в файле Lst_dt.dt

>>> f.close()

>>> f=open("Lst_dt.dt","rb")#Открываем бинарный файл на чтение

>>> pickle.load(f)#Читаем список из файла Lst_dt.dt

[23, 2.3, 'Это строка.', (4+6j)]

>>>

Наши рекомендации