hashlib模块

通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。

Python2中使用hashlib:

import hashlib
m = hashlib.md5()
# m <md5 HASH object @ 0x0000000001E5C800>
src = "ling"
m.update(src)
print(m.hexdigest())
# 24c10be286b009f797d53126790fcfd8

Python3中使用hashlib:

import hashlib
m = hashlib.md5()
# m = hashlib.md5("123".encode("utf-8")) # 加入一个随机数
# m <md5 HASH object @ 0x0000000001E5C800>
src = bytes("ling",encoding="utf-8")
src1 = bytes("zhangsan",encoding="utf-8")
m.update(src)
m.update(src1)
print(m.hexdigest())

如果数据量很大,可以分块多次调用update()。

StringIO模块

有时候数据读写不一定是文件,也可以在内存中读写。StringIO就是在内存中读写str。

from io import StringIO
# StringIO只能存字符串 stringIO = StringIO()
stringIO.write("hello,world\n")
stringIO.write("hello,python")
print(stringIO.getvalue())
#hello,world
#hello,python
stringIO.truncate(0) # 清空所有写入的内容
stringIO.flush() # 刷新内部缓冲区
print(stringIO.getvalue())
#没有输出,内容已经被清空了

StringIO也可以像读取文件一样读取:

from io import StringIO
stringIO = StringIO("hello\nworld")
while True:
s = stringIO.readline()
if s == "":
break
print(s.strip())

BytesIO模块

StringIO操作的只能是str,如果要操作二进制数据,就需要用到BytesIO。
from io import BytesIO
bytesIO = BytesIO()
bytesIO.write("中文".encode("utf-8"))
print(bytesIO.getvalue()) # 读取内容
注意:写入的不是str,而是utf-8编码的bytes。
BytesIO也可以像读取文件一样读取里面的内容:
from io import BytesIO
bytesIO = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87')
bytesIO.read()
b'\xe4\xb8\xad\xe6\x96\x87'

Json模块

json指的是JavaScript对象表示法,json是轻量级的文本数据交换格式。
用法:
loads      把字符串转换为python对象(如字典、列表等)
dumps    把python对象转换成字符串
load        把文件转换成python对象
dump      把python对象写入文件
 
对字符串进行操作,字符串转换成python对象:
import json
test = '''[{"a":1, "aa":11, "aaa":111},{"b":2, "bb":22, "bbb":333}]'''
print(type(test)) # <type 'str'>
newTest = json.loads(test) # 把字符串转换成python对象
print(type(newTest)) # <type 'list'>
print(newTest[0]["a"]) #

针对python2乱码问题,使用json解决:

import json
a = dict(hello="你好")
print(a) # {'hello': '\xe4\xbd\xa0\xe5\xa5\xbd'}
print(a["hello"]) # 你好
print(json.dumps(a,ensure_ascii=False)) # 把python对象转换成字符串
# {"hello": "你好"}

对文件进行操作,文件和python对象相互转换:

import json
test = {"a":1, "b":2}
with codecs.open("1.txt","w") as f:
json.dump(test, f) # 把python对象写入文件
with codecs.open("1.txt","r") as f:
aa = json.load(f) # 把文件转换成python对象,aa是unicode类型
print(aa) # {u'a': 1, u'b': 2}
print(type(aa)) # <type 'dict'>

python内置模块(三)的更多相关文章

  1. python内置模块(4)

    这一部分是python内置模块系列的最后一部分,介绍了一些小巧有用的内置模块. 目录: 1.random 2.shelve 3.getpass 4.zipfile 5.tarfile 6.bisect ...

  2. python内置模块[sys,os,os.path,stat]

    python内置模块[sys,os,os.path,stat] 内置模块是python自带功能,在使用内置模块时,需要遵循 先导入在 使用 一.sys 对象 描述 sys.argv 命令行参数获取,返 ...

  3. python内置模块(time模块)

    常用的python内置模块 一.time模块 在python的三种时间表现形式: 1.时间戳,给电脑看的. - 自1970-01-01 00:00:00到当前时间,按秒计算,计算了多少秒. impor ...

  4. python 内置模块续(二)

    目录 python 内置模块补充 1.hashlib模块 简易使用: 高级使用: 进阶使用: 加盐处理: 校验文件一致性 2.logging日志模块 日志等级 常用处理 "四大天王" ...

  5. Python内置模块(re+collections+time等模块)

    Python内置模块(re+collections+time等模块) 1. re模块 import re 在python要想使用正则必须借助于模块 re就是其中之一 1.1 findall功能( re ...

  6. 学习Python的三种境界

    前言 王国维在<人间词话>中将读书分为了三种境界:"古今之成大事业.大学问者,必经过三种之境界:'昨夜西风凋碧树,独上高楼,望尽天涯路'.此第一境也.'衣带渐宽终不悔,为伊消得人 ...

  7. selenium webdriver (python) 第三版

    感谢 感谢购买第二版的同学,谢谢你们对本人劳动成果的支持!也正是你们时常问我还出不出第三版了,也是你们的鼓励,让我继续学习整理本文档. 感谢乙醇前辈,第二版的文档是放在他的淘宝网站上卖的,感谢他的帮忙 ...

  8. Python第三天 序列 数据类型 数值 字符串 列表 元组 字典

    Python第三天 序列  数据类型  数值  字符串  列表  元组  字典 数据类型数值字符串列表元组字典 序列序列:字符串.列表.元组序列的两个主要特点是索引操作符和切片操作符- 索引操作符让我 ...

  9. 简学Python第三章__函数式编程、递归、内置函数

    #cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...

  10. 初学Python(三)——字典

    初学Python(三)——字典 初学Python,主要整理一些学习到的知识点,这次是字典. #-*- coding:utf-8 -*- d = {1:"name",2:" ...

随机推荐

  1. 【转】C#微信公众平台开发者模式开启代码

    using System; using System.IO; using System.Text; using System.Web.Security; namespace HPZJ.Web.sys. ...

  2. 第4章 scrapy爬取知名技术文章网站(1)

    4-1 scrapy安装以及目录结构介绍 安装scrapy可以看我另外一篇博文:Scrapy的安装--------Windows.linux.mac等操作平台,现在是在虚拟环境中安装可能有不同. 1. ...

  3. Java - 枚举与注解

    Enumeration 于Java 1.5增加的enum type... enum type是由一组固定的常量组成的类型,比如四个季节.扑克花色. 在出现enum type之前,通常用一组int常量表 ...

  4. Spring MVC 实现Excel的导入导出功能(1:Excel的导入)

    简介 这篇文章主要记录自己学习上传和导出Excel时的一些心得,企业办公系统的开发中,经常会收到这样的需求:批量录入数据.数据报表使用 Excel 打开,或者职能部门同事要打印 Excel 文件,而他 ...

  5. hadoop classpath 的作用

    HADOOP_CLASSPATH 是设置要运行的类的路径.否则当你用hadoop classname [args]方式运行程序时会报错,说找不到要运行的类.用hadoop jar jar_name.j ...

  6. IAAS,SAAS,PAAS, CaaS的区别

    来源:云计算头条微信公众号  作者:   你一定听说过云计算中的三个“高大上”的你一定听说过云计算中的三个“高大上”的概念:IaaS.PaaS和SaaS,这几个术语并不好理解.不过,如果你是个吃货,还 ...

  7. Java的文档注释之生成帮助文档

    示例: /** * Title: Person类<br/> * Description:通过Person类说明Java中的文档注释<br/> * Company: *** * ...

  8. C# 注释&SQL注释

    SQL注释: 1.单行注释:--单行注释 2.多行注释:/*多行 注释*/ C#注释: 1.单行注释://单行注释 2.多行注释:/*多行 注释*/ 3.说明注释:///<summary> ...

  9. 【转】老生常谈-从输入url到页面展示到底发生了什么

    今天看到了一篇很详细地解释了从输入url到页面展示过程的文章,好文章不能错过,所以转到自己这里来了. 原文地址:老生常谈-从输入url到页面展示到底发生了什么 以下为原文: 刚开始写这篇文章还是挺纠结 ...

  10. Fatal error: Namespace declaration statement has to be the very first statement or after any declare call in the script in

    学习php的命名空间,直接把手册的代码粘贴过来,却报错了:Fatal error: Namespace declaration statement has to be the very first s ...