"""Python 'uu_codec' Codec - UU content transfer encoding.This codec de/encodes from bytes to bytes.Written by Marc-Andre Lemburg (mal@lemburg.com). Some details wereadapted from uu.py which was written by Lance Ellinghouse andmodified by Jack Jansen and Fredrik Lundh."""import codecsimport binasciifrom io import BytesIO### Codec APIsdef uu_encode(input, errors='strict', filename='<data>', mode=0o666):assert errors == 'strict'infile = BytesIO(input)outfile = BytesIO()read = infile.readwrite = outfile.write# Encodewrite(('begin %o %s\n' % (mode & 0o777, filename)).encode('ascii'))chunk = read(45)while chunk:write(binascii.b2a_uu(chunk))chunk = read(45)write(b' \nend\n')return (outfile.getvalue(), len(input))def uu_decode(input, errors='strict'):assert errors == 'strict'infile = BytesIO(input)outfile = BytesIO()readline = infile.readlinewrite = outfile.write# Find start of encoded datawhile 1:s = readline()if not s:raise ValueError('Missing "begin" line in input data')if s[:5] == b'begin':break# Decodewhile True:s = readline()if not s or s == b'end\n':breaktry:data = binascii.a2b_uu(s)except binascii.Error as v:# Workaround for broken uuencoders by /Fredrik Lundhnbytes = (((s[0]-32) & 63) * 4 + 5) // 3data = binascii.a2b_uu(s[:nbytes])#sys.stderr.write("Warning: %s\n" % str(v))write(data)if not s:raise ValueError('Truncated input data')return (outfile.getvalue(), len(input))class Codec(codecs.Codec):def encode(self, input, errors='strict'):return uu_encode(input, errors)def decode(self, input, errors='strict'):return uu_decode(input, errors)class IncrementalEncoder(codecs.IncrementalEncoder):def encode(self, input, final=False):return uu_encode(input, self.errors)[0]class IncrementalDecoder(codecs.IncrementalDecoder):def decode(self, input, final=False):return uu_decode(input, self.errors)[0]class StreamWriter(Codec, codecs.StreamWriter):charbuffertype = bytesclass StreamReader(Codec, codecs.StreamReader):charbuffertype = bytes### encodings module APIdef getregentry():return codecs.CodecInfo(name='uu',encode=uu_encode,decode=uu_decode,incrementalencoder=IncrementalEncoder,incrementaldecoder=IncrementalDecoder,streamreader=StreamReader,streamwriter=StreamWriter,_is_text_encoding=False,)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。