非常教程

Python参考手册

网络数据 | Internet Data

multifile

自2.5版弃用:email应该优先使用软件包multifile。该模块仅用于保持向后兼容性。

MultiFile对象使您能够将文本文件的各部分视为文件类型的输入对象,并''readline()遇到给定的分隔符模式时将其返回。这个类的默认设计是为了解析MIME多部分消息而设计的,但通过对它的子类化和重写方法,它可以很容易地适用于更一般的使用。

class multifile.MultiFile(fp[, seekable])

创建一个多文件。您必须使用实例的输入对象参数实例化此类MultiFile以从中获取行,例如返回的文件对象open()

MultiFile永远只着眼于输入对象的readline()seek()tell()方法,如果你想个别MIME部分随机访问时,才需要后两者。要MultiFile在不可查找的流对象上使用,请将可选的seekable参数设置为false; 这将阻止使用输入对象seek()tell()方法。

MultiFile世界的角度来看,文本由三种线组成:数据,分节符和结束符,这将是有用的。MultiFile旨在支持可能具有多个嵌套消息部分的消息的解析,每个消息部分都有自己的部分分隔符和结束标记行模式。

1.多文件对象

一个MultiFile实例有以下方法:

MultiFile.readline(str)

阅读一行。如果该行是数据(不是分节符或结束标记或真正的EOF),则将其返回。如果该行匹配最近堆叠的边界,则返回''self.last根据匹配是否是结束标记设置为1或0。如果该线匹配任何其他堆积的边界,则引发错误。在遇到底层流对象的文件结尾时,Error除非所有边界都被弹出,否则该方法会引发。

MultiFile.readlines(str)

将这部分剩余的所有行作为字符串列表返回。

MultiFile.read()

阅读所有行,直到下一部分。将它们作为单个(多行)字符串返回。请注意,这不需要大小参数!

MultiFile.seek(pos[, whence])

寻求。寻找索引是相对于当前部分的开始。该POS那里参数被解释为文件查找。

MultiFile.tell()

返回相对于当前部分开始的文件位置。

MultiFile.next()

将行跳到下一部分(即,读取行,直到已经使用分节符或结束标记)。如果有这样的部分,则返回true;如果看到结束标记,则返回false。重新启用最近推送的边界。

MultiFile.is_data(str)

如果str是数据,则返回true ,如果它可能是区段边界,则返回false。正如所写的,它测试的是除'--'行首之外的前缀(所有MIME边界都有),但是它被声明为可以在派生类中重写。

请注意,此测试旨在用作真实边界测试的快速防护; 如果它总是返回false,它只会减慢处理速度,不会导致失败。

MultiFile.push(str)

推送一个边界字符串。当找到这个边界的修饰版本作为输入行时,它将被解释为分节符或结束标记(取决于装饰,请参阅RFC 2045)。所有后续读取将返回空字符串以指示文件结束,直到呼叫pop()移除边界a或next()调用重新启用它为止。

推动多个边界是可能的。遇到最近推动的边界将返回EOF; 遇到任何其他边界将引发错误。

MultiFile.pop()

弹出截面边界。这个边界将不再被解释为EOF。

MultiFile.section_divider(str)

将边界转换为分节符分隔线。默认情况下,此方法会预先设置'--'(哪些MIME节的边界有),但会声明它,以便可以在派生类中重写它。此方法不需要附加LF或CR-LF,因为与结果比较会忽略尾随空白。

MultiFile.end_marker(str)

将边界字符串转换为结束标记行。默认情况下,此方法预先'--'添加和附加'--'(如MIME-多部分消息结束标记),但它被声明为可在派生类中重写。此方法不需要附加LF或CR-LF,因为与结果比较会忽略尾随空白。

最后,MultiFile实例有两个公共实例变量:

MultiFile.level

嵌套当前部分的深度。

MultiFile.last

如果最后一个文件结束符是消息结束标记,则为真。

2.多文件示例

import mimetools
import multifile
import StringIO

def extract_mime_part_matching(stream, mimetype):
    """Return the first element in a multipart MIME message on stream
    matching mimetype."""

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

    data = StringIO.StringIO()
    if msgtype[:10] == "multipart/":

        file = multifile.MultiFile(stream)
        file.push(msg.getparam("boundary"))
        while file.next():
            submsg = mimetools.Message(file)
            try:
                data = StringIO.StringIO()
                mimetools.decode(file, data, submsg.getencoding())
            except ValueError:
                continue
            if submsg.gettype() == mimetype:
                break
        file.pop()
    return data.getvalue()
Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法