研究一下uucode编码
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编码的更多相关文章
- 杂谈SharpDx中的WIC组件——我们需要WIC的图片编码功能么?
在前文 SharpDX之Direct2D教程II——加载位图文件和保存位图文件 中,发现在VB2010中不能很好的运用SharpDx中的WIC组件进行图片的编码工作.可能是我的设置问题,也可能是Sha ...
- speex的基本编码和解码流程
最近在研究speex的编码和解码流程 之前在IM上用到的都是发语音片段,这个很简单,只需要找到googlecode上gauss的代码,然后套一下就可以用了. 不过googlecode要关闭,有人将他导 ...
- 肠道微生物研究进展 | Microbiology | Human Gut Microbiome | human gut microbiota
之前我有过一篇16s基本概念和数据分析的文章.16S 基础知识.分析工具和分析流程详解 可以分成两部分,生物层面和技术层面. 生物层面: 1. 肠道微生物里面包含了哪些微生物?显然包含了所有层面的微生 ...
- PHP防SQL注入不要再用addslashes和mysql_real_escape_string
PHP防SQL注入不要再用addslashes和mysql_real_escape_string了,有需要的朋友可以参考下. 博主热衷各种互联网技术,常啰嗦,时常伴有强迫症,常更新,觉得文章对你有帮助 ...
- AngularJS中实现无限级联动菜单
多级联动菜单是常见的前端组件,比如省份-城市联动.高校-学院-专业联动等等.场景虽然常见,但仔细分析起来要实现一个通用的无限分级联动菜单却不一定像想象的那么简单.比如,我们需要考虑子菜单的加载是同步的 ...
- spring MVC学习笔记
为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平.你的一个决定会影响团队未来的几年.要考虑方面太多: 1.简单易用,以提高开发效率.使小部分的精力在框架上,大部 ...
- ubuntu下读取数据库中文乱码解决
请按如下配置myqsl.cnf (/etc/mysql/mysql.conf.d/mysql.cnf ),然后重启mysql服务,对于web程序,你可以把web所有编码都搞成utf-8[client] ...
- 坚持自学的第二天,bootstrap初入门
前言 昨天,初步学完了jekyll目录结构与Liquid语法的应用与认识. 日志 今天刚入门,做了一个bootstrap导航栏,但是选中状态不行,找了JS中写好的API,写法与视频中讲的有点不一样,但 ...
- ffmpeg API录制rtsp视频流
原文出自http://blog.csdn.net/zxwangyun/article/details/8190638#reply 作者 Sloan 这里在录制时,并没有进行转码,只是相当于把rts ...
随机推荐
- Jedis 一
//连接Jedis public Jedis getJedis(){ Jedis jedis = new Jedis("192.168.1.12",6379); //权限认证 // ...
- 浏览器的模式问题 Quirks Mode vs Standards Mode
当微软开始产生与标准兼容的浏览器时,他们希望确保向后兼容性.为了实现这一点,他们IE6.0以后的版本在浏览器内嵌了两种表现模式: Standards Mode(标准模式或Strict Mode)和Qu ...
- COCI2014-2015CONTEST#7——POLICE
http://www.hsin.hr/coci/archive/2014_2015/contest7_tasks.pdf [题目描述] 有N个书架,每个书架可以容纳M本书.给出了若干本书,每本书有一个 ...
- 【模拟】XMU 1599 斐波那契汤
题目链接: http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1599 题目大意: 给k,m,q以及f[1]...f[k],当n<m时,f[n]= ...
- 【搬运】一分钟快速入门OpenStack
一.它是什么,能干什么 想认识一个事物,必须先弄明白它是什么,能干什么. 首先说一下,openstack是一个搭建云平台的一个解决方案,说他不是个软件,但是我觉得说是一个软件,能够让初学者 ...
- http://aws.amazon.com/cn/ses/ 亚马逊 营销性非事务邮件发送平台
http://aws.amazon.com/cn/ses/ 亚马逊 营销性非事务邮件发送平台
- HDU_1429——胜利大逃亡续,十位二进制状态压缩,状态判重
Problem Description Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)……这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢的某些地方安装了带锁 ...
- stm32开发笔记一:使用固件库在RealView-MDK中新建工程(上)
很久没有碰单片机了,两年了吧,因为项目需要,最近入手一块红牛的开发板,核心为STM32F103ZE.虽然以前做过大概半年的stm32的开发,现在天天在.net平台下写代码,已经忘记的差不多,恰逢周末, ...
- linux使用mount挂载iso文件
mount -t iso9660 -o loop /home/user/XXX.iso /mnt/iso
- 【转】ASP.NET MVC 数据验证及相关内容
原文地址:http://www.jb51.net/article/56713.htm 一.数据验证 数据验证的步骤在模型类中添加与验证相关的特性标记在客户端导入与验证相关的js文件和css文件使用与验 ...