uucode编码是把任意二进制数据转换为ascii字符的编码
用于在一些只能传递文本的地方传送二进制数据

uu模块提供了encode()和decode()用于将一个文件转换为
uucode编码的字符文件,文件的内容以begin开头以end结尾
中间内容即转换的内容

codecs模块的encode(),decode()参数encoding='uu-codec'
用于在数据与数据之间转换(bytes <---> str:uucode)

binascii.a2b_uu()和binascii.b2a_uu()也用作在bytes与
uucode之间的转换,区别是它不带标头信息(不带begin,end)

str <---> bytes <---> uucode

binascii.b2a_uu(bytes) 把bytes转换为uucode
binascii.a2b_uu(uucode) 把uucode转换为bytes

codecs.encode(bytes, 'uu-codec') 把bytes转换为uucode,带header
codecs.decode(uucode, 'uu-codec') 把uucode(带header)转换为bytes

uu模块用于二进制数据与uucode编码之间的转换
file参数接受file-like对象
为了向后兼容,也接受带有路径的文件名字符串,也可以是'-'表示标准输入输出
此接口已被标记为废弃,调用者应该自己打开文件,用'rb'或'wb'模式
uu.encode(in_file, out_file, name = None, mode = None)
把in_file编码为uucode输出到out_file
编码后的文件带有header信息,指定的name和mode
in_file:输入文件.以'rb'模式打开.
out_file:指定输出文件
name: 指定一个名字, 默认是'-'表示标准输入输出
mode 文件权限,默认是 0o666

uu.decode(in_file, out_file = None, mode = None, quiet = False)
把uucode编码的文件in_file解码到out_file
in_file: 输入文件,uucode编码文件
out_file 指定输出文件,如果不存在则用mode创建.如果不指定,则用in_file的header
mode 指定文件权限,如果不指定,则用in_file的header
注意,如果使用默认的header创建文件,如果文件已存在,则抛出异常.
quiet: 编码错误则打印警告;如果为True则不打印警告

二进制,字符编码,uucode编码之间的相互转换

import uu, codecs, binascii

a = '测试'.encode() #str -> bytes
b = codecs.encode(a, 'uu-codec') #bytes -> uucode
c = codecs.decode(b, 'uu-codec') #uucode -> bytes
d = binascii.b2a_uu(a) #bytes -> uucode
e = binascii.a2b_uu(d) #uucode -> bytes
print(a)
print(b)
print(c)
print(d)
print(e)

以下是测试uu模块的encode,decode的用法

#把一个二进制文件转换为uucode文本文件
#文件必须以二进制方式打开 with open('py2c.exe', 'rb') as in_file, open('test.txt', 'wb') as out_file:
uu.encode(in_file, out_file) #默认name='-',mode=0o666 #解码 with open('test.txt', 'rb') as in_file:
uu.decode(in_file) #默认输出是'-',所以输出到了命令行,也可以指定参数输出到文件

上面的操作由于编码时没指定名字,所以解码时无法知道原始文件名,也就没法知道这到底是个什么文件

#测试2:指定名字

with open('py2c.exe', 'rb') as in_file, open('test.txt', 'wb') as out_file:
uu.encode(in_file, out_file, name = in_file.name) #解码 with open('test.txt', 'rb') as in_file:
uu.decode(in_file) #得到文件py2c.exe,如果已存在,则异常

采用默认的header信息中的文件名,如果已存在,则抛出异常,而如果是指定的文件名已存在,则不会抛出异常,而是覆盖

with open('test.txt', 'rb') as in_file:
uu.decode(in_file, 'py2c.exe') #如果py2c.exe已存在,则覆盖

研究一下uucode编码的更多相关文章

  1. 杂谈SharpDx中的WIC组件——我们需要WIC的图片编码功能么?

    在前文 SharpDX之Direct2D教程II——加载位图文件和保存位图文件 中,发现在VB2010中不能很好的运用SharpDx中的WIC组件进行图片的编码工作.可能是我的设置问题,也可能是Sha ...

  2. speex的基本编码和解码流程

    最近在研究speex的编码和解码流程 之前在IM上用到的都是发语音片段,这个很简单,只需要找到googlecode上gauss的代码,然后套一下就可以用了. 不过googlecode要关闭,有人将他导 ...

  3. 肠道微生物研究进展 | Microbiology | Human Gut Microbiome | human gut microbiota

    之前我有过一篇16s基本概念和数据分析的文章.16S 基础知识.分析工具和分析流程详解 可以分成两部分,生物层面和技术层面. 生物层面: 1. 肠道微生物里面包含了哪些微生物?显然包含了所有层面的微生 ...

  4. PHP防SQL注入不要再用addslashes和mysql_real_escape_string

    PHP防SQL注入不要再用addslashes和mysql_real_escape_string了,有需要的朋友可以参考下. 博主热衷各种互联网技术,常啰嗦,时常伴有强迫症,常更新,觉得文章对你有帮助 ...

  5. AngularJS中实现无限级联动菜单

    多级联动菜单是常见的前端组件,比如省份-城市联动.高校-学院-专业联动等等.场景虽然常见,但仔细分析起来要实现一个通用的无限分级联动菜单却不一定像想象的那么简单.比如,我们需要考虑子菜单的加载是同步的 ...

  6. spring MVC学习笔记

    为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平.你的一个决定会影响团队未来的几年.要考虑方面太多: 1.简单易用,以提高开发效率.使小部分的精力在框架上,大部 ...

  7. ubuntu下读取数据库中文乱码解决

    请按如下配置myqsl.cnf (/etc/mysql/mysql.conf.d/mysql.cnf ),然后重启mysql服务,对于web程序,你可以把web所有编码都搞成utf-8[client] ...

  8. 坚持自学的第二天,bootstrap初入门

    前言 昨天,初步学完了jekyll目录结构与Liquid语法的应用与认识. 日志 今天刚入门,做了一个bootstrap导航栏,但是选中状态不行,找了JS中写好的API,写法与视频中讲的有点不一样,但 ...

  9. ffmpeg API录制rtsp视频流

    原文出自http://blog.csdn.net/zxwangyun/article/details/8190638#reply   作者 Sloan 这里在录制时,并没有进行转码,只是相当于把rts ...

随机推荐

  1. mongoose CastError: Cast to ObjectId failed for value

    restfull路由如下: router.get('/:id', controller.show); mongoes代码如下: exports.show = function(req, res) { ...

  2. angular2 学习笔记 ( rxjs 流 )

    RxJS 博大精深,看了好几篇文章都没有明白. 范围牵扯到了函数响应式开发去了... 我对函数式一知半解, 响应式更是第一次听到... 唉...不过日子还是得过...混着过先呗 我目前所理解的很浅,  ...

  3. 文档整体解决方案(readthedocs、github 、sphinx)使用

    这里是总结了一下,用的工具或者平台:readthedocs.github .sphinx. 使用这三个工具即可轻松创建高效的文档管理库,可以用来翻译,水平再高一点可以写书. readthedocs 文 ...

  4. 最小费用最大流MCMF zkw费用流

    稀疏图慢死了...但是稠密图效果还是很好的 struct MCMF{ struct tedge{int x,y,cap,w,next;}adj[maxm];int ms,fch[maxn]; int ...

  5. 设计模式(六):Singleton 单件模式 -- 创建型模式

    1.定义 当需要控制一个类的实例数量且调用者可以从一个公共的访问点访问时. 2.适用场景 1. 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时. 2. 当这个唯一实例应该是通过子类化可扩 ...

  6. 【转】linux内核调试技巧之一 dump_stack

    原文网址:http://blog.csdn.net/dragon101788/article/details/9419175 在内核中代码调用过程难以跟踪,上下文关系复杂,确实让人头痛 调用dump_ ...

  7. 【模拟】HDU 5762 Teacher Bo

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5762 题目大意: 给n个点,坐标范围0~m(n,m<=105),求是否存在2个点对满足哈夫曼距 ...

  8. “/”应用程序中的服务器错误。 / c:\windows\temp目录权限设置

    说明: 1 对该目录的权限是ASP.net生成编译运行的临时文件需要,ASP不需要这个目录是因为ASP的脚本代码是解释执行. 2 Windows2003默认的设置是可以正常运行ASP.net的,造成问 ...

  9. Android应用开发学习之图片切换器

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 如果我们要实现类似Windows的照片查看器切换上一张下一张照片的效果,可以使用图片切换器ImageSwitcher ...

  10. open Session In View模式

    首先看图说话: ****Open Session In View模式的主要思想是:在用户的每一次请求过程始终保持一个Session对象打开着*** 接下来就是代码: +++++++++++++++++ ...