Чтение и запись указанных значений




Основы работы с файлами

 

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

 

Пример. Создание каталога для сохранения данных приложения

import os, os.path

 

PATH = u"C:\\Data\\MyApp"

if not os.path.exists(PATH):

os.makedirs(PATH)

 

Важно! До создания каталога (вызова os.makedirs()) необходимо убедиться, что каталог не существует.

Это простой пример обработки исключительных ситуаций (ошибок) в Python.

Объект File

В Python, файлы считываются и записываются через объект File. Создание объекта File открывает файл, либо для чтения или записи.

Объект File предоставляет различные функции для доступа к данным в открытом файле. Объект File включает в себя курсора, который указывает на определенное место файла. Каждый раз, когда вы читаете или записываете данных в файл, курсор перемещается соответственно.

Концептуально, курсор в объекте File работает так же, курсор в текстовом редакторе.

 

Пример. Вот простой пример, который открывает файл, записывает строку его и читает строки из файла. После того как вы выполнили скрипт вы должны увидеть новый файл C: \ Python \ test.txt, на вашем мобильном устройстве.

 

>>>import os

>>>f = file(u"c:\\python\\test.txt", "w+")# файл открыт на запись, если #до этого файл не существовал, он будет создан для #записи

>>>print >> f, "Hello!!!" #запись в файл текста Hello!!!

>>>f.seek(0) #перевод курсора в начало файла

>>>print "File says:", f.read()

>>>f.close()

 

Первая строка открывает файл. Имя файла должно быть указано в виде строки Unicode.

Обратите внимание, что поскольку знак «\» является управляющим символом Python, то в рассматриваемой инструкции он должен быть удвоен.

 

Самый простой способ, чтобы написать что-нибудь в файл, это использовать оператор печати «>>».

print >> f, "Hello!!!"

 

Оператор печати всегда выполняет перевод на новую строку. Если вы хотите избежать этого, можно использовать функцию Write () объекта File. В приведенном выше примере, мы могли бы написать:

 

f.write("Hello!!!")

 

Чтобы прочитать созданный файл, файл курсор должен быть повторно вернуться к началу. Функция seek() выполняет эту работу. Значение "0" указывает, что курсор перепозиционируется.

Чтение и запись текста

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

Но что, если вам необходимо прочитать список строк вместо этого?

 

Пример ниже показывает, как это сделать. Этот сценарий при выполнении должен распечатать содержимое списка test_list.

 

 

>>>def save_list(filename, list):

... f = file(filename, "w") # файл открыт на запись

... for item in list: # пока значения переменной item принадлежат #списку list выполнять заполнение ими файла f

... print >> f, item

... f.close()

 

>>>def load_list(filename):

... f = file(filename, "r")# файл открыт на чтение

... lst = [] # создаем пустой список

... for line in f:

... lst.append(line.strip()) # заполняем пустой список lst #считывая построчно содержимое файла, функция #append()добавляет элемент считанное в конец списка

... f.close()

... return lst

 

>>>test_list = ["first line", "second line", "that's all"]# определяем список

>>>save_list(u"c:\\python\\test.txt", test_list)

>>>print load_list(u"c:\\python\\test.txt")

["first line", "second line", "that's all"]

>>>

 

Список, считанный из файла идентичен первоначальному списку test_list.

Пользовательская функция save_list() записывает каждый элемент данного списка (ее аргумент list) в файл.

Функция load_list() читает содержимое файла, чтение линии в момент времени в цикле, и добавляет каждую строку в списке lst.

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

>>> text = ‘ string ’

>>> text.strip()

‘string‘

>>>

 

Пара «ключ-значение»

 

Словарь – это последовательность, доступ к элементам которой производится по ключу. Ключами могут быть как числа, так и строки. По характеру работы словарь аналогичен своему книжному аналогу – например, англо-русский словарь: мы ищем в нем какое-то слово и получаем перевод.

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

>>> dict = {‘S’: ‘Symbian’, ‘WM’: ’Windows Mobile’}

>>> dict [‘S’]

‘Symbian’

>>>

Чтение и запись указанных значений

Использование словарей, мы можем развивать функции для сохранения и загрузки файла конфигурации, который состоит из ключей и значений. Формат, представленный здесь легко читать и редактировать вручную. Недостатком является то, что только строки принимаются в качестве ключей и значений. Кроме того, сохранены строки не должны содержать символы новой строки или двоеточия.

 

Записать содержимое словаря в файл просто. Для этого напишем собственную функцию:

 

def save_dictionary(filename, dict):

f = file(filename, "w")

for key, value in dict.items():

print >> f, "%s: %s" % (key, value)

f.close()

 

Один пары ключ-значение сохраняется в каждой строке. Ключ и значение строки, разделенные двоеточием. Из-за этих выборов, строки не может содержать двоеточия или символы новой строки этого.

 

Содержимое файла конфигурации может выглядеть так:

Host: www.google.com

Port: 80

Username: my_login

Password: this is a visible secret

 

 

Чтение файла немного сложнее, чем писать.

 

def load_dictionary(filename):

f = file(filename, "r")

dict = {}# создаем словарь

for line in f:

key, value = line.split(":")# split() возвращает кортеж

dict[key.strip()] = value.strip() #удаляем символы пропуска и #заполняем словарь

f.close()

return dict

 

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

В итоге переменные ключ и значение становятся значением словаря dict.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-01-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: