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. [PY3]——Python的函数

    Python函数总结图 1.调用 1.1 如何调用 1.1.1  函数名(传参) # 函数使用函数名来调用,函数名后紧跟一对小括号,小括号里传入函数定义时要求的参数 add(9,9) #9+9=18 ...

  2. Git——新手入门与上传项目到远程仓库GitHub

    Git:先进的分布式版本控制系统,一个开源式的分布式版本控制工具. Git安装 在Windows操作系统下,访问Git下载地址https://git-for-windows.github.io/ 注册 ...

  3. JavaScript迭代

    定义: 指的是按照某种顺序逐个访问列表中的每一项. 迭代在数学中的定义: 在循环的基础上, 每一次循环, 都比上一次更为接近结果. 循环定义:指的是在满足条件的情况下,重复执行同一段代码. 迭代方法: ...

  4. WPF实现夜间模式

    背景 项目中设计了一个黑色主题,稍加改正也可作为夜间模式,效果图如下: 原理 由于项目中存在地图,而地图完全是由位图组成,不能直接改变背景色,所以我在内容上面放置了一个黑色的Border作为遮罩.可通 ...

  5. MapReduce详解和WordCount模拟

    最早接触大数据,常萦绕耳边的一个词「MapReduce」.它到底是什么,能做什么,原理又是什么?且听下文讲解. 是什么 MapReduce 即是一个编程模型,又是一个计算框架,它充分采用了分治的思想, ...

  6. dubbo客户端源码分析(一)

    rpc框架有很多,公司自研.开源的thrift.dubbo.grpc等.我用过几个框架,了解了一下实现原理,客户端基本都是用代理实现,jdk动态代理.cglib等.最近一段时间想了解一下dubbo源码 ...

  7. C#学习笔记-继承基本知识

    namespace Inheritance { class Program { static void Main(string[] args) { Dog dog = new Dog(); dog.A ...

  8. python Tensorflow 实现图像的卷积处理

    1.convolution.py import numpy as np from sklearn.datasets import load_sample_images import tensorflo ...

  9. js点击事件在苹果端失效的问题

    在安卓机上,我们随意定义点击事件也能够在找到点击的元素,但是在苹果端上就是不行,怎么点击都没有效果.这是因为在苹果机上window禁止了手指误点功能,必须解除这一功能,或者给点击事件指引某个元素上绑定 ...

  10. path-to-regexp快速拆分 url 路径中的参数信息

    介绍一个小工具 path-to-regexp 用于快速拆解url path中的部分,贴别适合restful接口中快速获取对应的实体参数 git地址可以参考 https://github.com/pil ...