1

Python 2.7.4 用のパッケージで、 にアクセスするとLib -> email -> errors.py、モジュールに何かおかしいものがあります。


# Copyright (C) 2001-2006 Python Software Foundation
# Author: Barry Warsaw
# Contact: email-sig@python.org

"""email package exception classes."""



class MessageError(Exception):
    """Base class for errors in the email package."""


class MessageParseError(MessageError):
    """Base class for message parsing errors."""


class HeaderParseError(MessageParseError):
    """Error while parsing headers."""


class BoundaryError(MessageParseError):
    """Couldn't find terminating boundary."""


class MultipartConversionError(MessageError, TypeError):
    """Conversion to a multipart is prohibited."""


class CharsetError(MessageError):
    """An illegal charset was given."""



# These are parsing defects which the parser was able to work around.
class MessageDefect:
    """Base class for a message defect."""

    def __init__(self, line=None):
        self.line = line

class NoBoundaryInMultipartDefect(MessageDefect):
    """A message claimed to be a multipart but had no boundary parameter."""

class StartBoundaryNotFoundDefect(MessageDefect):
    """The claimed start boundary was never found."""

class FirstHeaderLineIsContinuationDefect(MessageDefect):
    """A message had a continuation line as its first header line."""

class MisplacedEnvelopeHeaderDefect(MessageDefect):
    """A 'Unix-from' header was found in the middle of a header block."""

class MalformedHeaderDefect(MessageDefect):
    """Found a header that was missing a colon, or was otherwise malformed."""

class MultipartInvariantViolationDefect(MessageDefect):
    """A message claimed to be a multipart but no subparts were found."""

これがモジュールの全内容です。これとは別に、プレビューに表示されず、コピー&ペーストできない非常に奇妙なキャラクターが 2 つあります。人間の棒人間のように(メモ帳で)見えて、かなり面白いと思いました。

そのうちの1人は前に並んでいます

class MessageError(Exception):
    """Base class for errors in the email package."""

もう一つはその後

class CharsetError(MessageError):
    """An illegal charset was given."""

これらのキャラクターがそこで何をしているかについて誰か考えがありますか? それとも私の荷物だけですか?

4

2 に答える 2

5

このファイルを Vim で開くと、フォーム フィード^Lとも呼ばれる文字が表示されます。

PEP8 スタイル ガイドを参照すると、次のことがわかります。

Python は control-L (つまり^L) フォーム フィード文字を空白として受け入れます。多くのツールはこれらの文字をページ区切りとして扱うため、ファイルの関連するセクションのページを区切るために使用できます。一部のエディターおよび Web ベースのコード ビューアーは、control-L をフォーム フィードとして認識せず、代わりに別のグリフを表示する場合があることに注意してください。

あなたの場合、これらは派生クラスから派生クラスを^L論理的に分離するだけです。MessageErrorMessageDefect

于 2013-04-29T13:34:21.057 に答える
1

私のバージョンのパッケージにも含まれています。私が見るバイナリエディタでファイルを開く

0D 0A 0D 0A 0D 0A 0C 0D 0A

これらの0D 0Aペアはすべてキャリッジ リターン/ライン フィード (Windows の行末) です。は0Cフォーム フィード文字であるため、モジュールを印刷すると、各セクションが別々のページに表示されます。Python パーサーはそれらを無視する必要があります。

于 2013-04-29T13:33:44.803 に答える