Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 [ 120 ] 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145

28.4. multifile - чтение сообщений, состоящих из нескольких ... 377

readlines()

Возвращает список всех оставшихся строк для данной части.

read()

Считывает и возвращает все оставшиеся данные для текущей части.

next()

Считывает строки до конца текущей части и, если достигнута метка конца, возвращает 0 , в противном случае переходит к следующей части (разрешает повторное использование разделителя на вершине стека) и возвращает 1 .

pop()

Удаляет с вершины стека разделительную строку.

seek (pos [, whence])

Перемещает указатель по текущей части. Аргументы имеют такое же значение, как и для метода seek() файловых объектов (см. раздел 11.7).

tell()

Возвращает текущую позицию в текущей части. is data( str)

Возвращает 1 , если строка str точно не является разделителем или меткой конца (то есть является строкой с данными), иначе (если строка может быть разделителем или меткой конца) возвращает 0 . Вы можете переопределить этот метод в производном классе, исходная реализация проверяет наличие -- в начале строки (для формата MIME).

Этот метод предназначен для быстрой проверки: если он будет всегда возвращать 0 , это лишь замедлит обработку, но не приведет к ошибкам.

section divider( str)

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

end marker( str)

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

Кроме того, экземпляры класса MultiFile имеют два публичных атрибута данных:



28.5 xdrlib - представление данных в формате XDR

Модуль xdrlib предоставляет средства для работы с данными в формате XDR (eXternal Data Representation, аппаратно-независимое представление данных) в соответствии с RFC 10141 и поддерживает большинство типов данных, описанных в стандарте. Другие

1Формат XDR разработан фирмой Sun Microsystems в 1987 году, новая версия формата описана в RFC 1832.

level

Уровень вложенности текущей части.

last

Является истиной (1), если последний разделитель являлся меткой конца.

В качестве примера определим функцию, которая находит в сообщении (в формате MIME) часть, имеющую определенный тип (если сообщение не содержит частей такого типа, возвращает пустую строку):

import mimetools import multifile import StringIO

def extract mime part matching(stream, mimetype):

msg = mimetools.Hessage(stream) msgtype = msg.gettype() params = msg.getplist()

data = StringlO.StringlOO

if msgtype.startswith(multipart/):

file = multifile.HultiFile(stream) file.push(msg.getparam(boundary)) while file.next():

submsg = mimetools.Hessage(file)

try:

data = StringlO.StringlOO mimetools.decode(file, data,

submsg.getencodingO)

except ValueError: continue

if submsg.gettypeO == mimetype: break file.popO return data.getvalueO



28.5. xdrlib - представление данных в формате XDR 379

(менее переносимые) способы получения представления объектов описаны в главе 20. Модуль определяет два класса: для упаковки данных в XDR-представление и для их распаковки.

Packer ()

Экземпляры этого класса реализуют упаковку объектов в XDR-представление. Unpacker( data)

Экземпляры этого класса позволяют получить объекты из их XDR-представления, заданного в строке (или другом объекте, имеющем интерфейс буфера) data.

Экземпляры класса Packer имеют следующие методы: get buffer()

Возвращает текущее содержимое буфера с упакованными данными в виде строки (данные их буфера не удаляются).

reset()

Очищает буфер.

pack uint( value) pack int( value) pack enum( value) pack bool( value) pack uhyper( value) pack hyper( value) pack float( value) pack double( value)

Записывают в буфер XDR-представление данных value соответствующих простых

типов.

pack fstring( n, s)

pack fopaque( n, s)

Записывают в буфер XDR-представление строки s фиксированной длины n. Заметим, что длина строки не сохраняется в представлении. Если необходимо, строка дополняется нулевыми байтами для обеспечения выравнивания к 4 байтам.

pack string( s) pack opaque( s) pack bytes( s)

Записывают в буфер XDR-представление строки s переменной длины (сначала упаковывается длина строки в виде беззнакового целого, затем сама строка).

pack list(list, pack item)

Записывают в буфер XDR-представление гомогенной последовательности list,



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 [ 120 ] 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145