Python 常用模块续

一、logging

用于记录日志并线程安全的模块

import logging
logging.basicConfig(level=logging.DEBUG,
                    format=‘%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s‘,
                    datefmt=‘%Y-%m-%d %H:%M:%S %p‘,
                    filename=‘log.txt‘,
                    filemode=‘w‘
                    )
logging.debug("debug messages")
logging.info("info messages")
logging.warning("warning messages")
logging.error("error messages")
logging.critical("critical messages")

日志文本结果

2018-03-23 10:33:43 AM - root - DEBUG -os_module:  debug messages
2018-03-23 10:33:43 AM - root - INFO -os_module:  info messages
2018-03-23 10:33:43 AM - root - WARNING -os_module:  warning messages
2018-03-23 10:33:43 AM - root - ERROR -os_module:  error messages
2018-03-23 10:33:43 AM - root - CRITICAL -os_module:  critical messages

日志基本配置选项:

Format Description
filename 指定日志文件名
filemode 指定操作日志文件的模式,默认是‘a’
format 记录日志的格式
datefmt 记录日期时间的格式
style 样式
level 指定要记录的日志级别
stream 使用指定的流初始化,与filename不可同时配置
handlers 指定iterable,与filename和stream不兼容

日志等级:

level Numeric value
CRITICAL 50
ERROR 40
WARNING 30
INFO 20
DEBUG 10
NOTSET 0

日志格式:

更多日志详细信息请猛击这里

二、json,pickle,shelve

在程序运行时保存数据的一种方法是把所有数据以格式化的方式写入一个简单的文本文件中,只要保存和装载的工具在所选格式上达成一致,我们就可以随心所欲地使用任何自定义格式。
1、pickle
pickle模块将内存中的Python对象转化为序列化的字节流,这是一种可以写入任何类似文件对象的字节串,同时,pickle模块也可以根据序列化的字节流重新构建原来内存中的对象。
转换并写入文件:

import pickle
db = {‘name‘:‘Eric Jia‘,‘age‘:‘18‘,‘job‘:‘ops‘,‘pay‘:200}
dbfile = open(‘pickle_db‘,‘wb‘)
pickle.dump(db,dbfile)
dbfile.close()

从文件中读取数据:

import pickle
dbfile = open(‘pickle_db‘,‘rb‘)
pickle.load(dbfile)
dbfile.close()

直接转换,不写入文件:

import pickle
db = {‘name‘:‘Eric Jia‘,‘age‘:‘18‘,‘job‘:‘ops‘,‘pay‘:200}
a = pickle.dumps(db)
print("a:",a)

b = pickle.loads(a)
print("b:",b)
a: b‘\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x08\x00\x00\x00Eric Jiaq\x02X\x03\x00\x00\x00ageq\x03X\x02\x00\x00\x0018q\x04X\x03\x00\x00\x00jobq\x05X\x03\x00\x00\x00opsq\x06X\x03\x00\x00\x00payq\x07K\xc8u.‘
b: {‘name‘: ‘Eric Jia‘, ‘age‘: ‘18‘, ‘job‘: ‘ops‘, ‘pay‘: 200}

2、json
json主要用于python数据类型与字符串之间的转换,用法与pickle一致

1、dump:转换为字符串存入文件
import json
db = {‘name‘:‘Eric Jia‘,‘age‘:‘18‘,‘job‘:‘ops‘,‘pay‘:200}
dbfile = open(‘json_db‘,‘w‘)
json.dump(db,dbfile)
dbfile.close()
2、load:从文件中取出并转换为Python数据对象
dbfile = open(‘json_db‘,‘r‘)
json.load(dbfile)
dbfile.close()
3、dumps,loads:直接转换,不写入文件
db = {‘name‘:‘Eric Jia‘,‘age‘:‘18‘,‘job‘:‘ops‘,‘pay‘:200}
a = json.dumps(db)
print(a)
b = json.loads(a)
print(b)

3、shalve
pickle和json可以将python数据类型持久存储,假如你的文件系统可以处理任意多需要的文件,每个文件都是一个单独的pickle文件,这样可以避免修改一条记录时都要重新载入和存储整个数据库,这就需要将每个pickle文件名当作字典的键来存储,通过键值来访问数据,Python标准库为我们提供了一个名为shelves的模块来做这些事。
创建shelve数据库

N1 = {‘name‘:‘Eric Jia‘,‘age‘:‘18‘,‘job‘:‘ops‘,‘pay‘:200}
N2 = {‘name‘:‘Bob smith‘,‘age‘:‘28‘,‘job‘:‘java‘,‘pay‘:2000}
N3 = {‘name‘:‘David‘,‘age‘:‘38‘,‘job‘:‘go‘,‘pay‘:20000}

import shelve
db = shelve.open(‘make_db‘)

db[‘N1‘] = N1
db[‘N2‘] = N2
db[‘N3‘] = N3

db.close()

创建出的shelve数据库如下

重新打开shelve并通过键来取得数据

import shelve
db = shelve.open(‘make_db‘)
for key in db:
    print(key,"=>",db[key])
db.close()
输出:
N1 => {‘name‘: ‘Eric Jia‘, ‘age‘: ‘18‘, ‘job‘: ‘ops‘, ‘pay‘: 200}
N2 => {‘name‘: ‘Bob smith‘, ‘age‘: ‘28‘, ‘job‘: ‘java‘, ‘pay‘: 2000}
N3 => {‘name‘: ‘David‘, ‘age‘: ‘38‘, ‘job‘: ‘go‘, ‘pay‘: 20000}

小结:
1、shelve内部会使用pickle来序列化和反序列化记录,它的接口像pickle一样简单:与字典相同,只是增加了open和close调用。
2、pickle用于python特有的类型和python的数据类型间进行转换,是python独有的
3、json用于字符串和python数据类型间进行转换,所有程序语言都可用。

原文地址:http://blog.51cto.com/jiayimeng/2090260

时间: 2024-11-01 16:40:19

Python 常用模块续的相关文章

python——常用模块

time.asctime(time.localtime(1234324422)) python--常用模块 1 什么是模块: 模块就是py文件 2 import time #导入时间模块 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的时间字符串: (1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行"type(time.time())",返回的是float类型.

实战篇一 python常用模块和库介绍

# [email protected] coding: utf-8 [email protected] -- Python 常用模块和库介绍 第一部分:json模块介绍 import json 将一个Python数据结构转换为JSON: dict_ = {1:2, 3:4, "55":"66"} # test json.dumps print type(dict_), dict_ json_str = json.dumps(dict_) print "js

python——常用模块2

python--常用模块2 1 logging模块 1.1 函数式简单配置 import logging logging.debug("debug message") logging.info("info message") logging.warning("warning message") logging.error("error message") logging.critical('critical message')

Python常用模块-随机数模块(random)

Python常用模块-随机数模块(random) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用方法举例 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7

Python常用模块-摘要算法(hashlib)

Python常用模块-摘要算法(hashlib) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MD5算法参数详解 1.十六进制md5算法摘要 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess logging re正则 转自老男孩老师Yuan:http://www.cnblogs.com/yuanchenqi/articles/5732581.html 模块&包(* * * * *) 模块(modue)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,

python常用模块之time&datetime模块

python常用模块之time&datetime模块 在平常的代码中,我们经常要与时间打交道.在python中,与时间处理有关的模块就包括:time和datetime,下面分别来介绍: 在开始之前,首先要说明有以下几种方式来表示时间: 1.时间戳 2.格式化的时间字符串(时间对象) 3.元组(struct_time)共九个元素,由于python的time模块实现主要调用C库,所以各个平台可能不同 几个定义 UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文

Python常用模块——系统调用os模块

Python常用模块--系统调用os模块 OS模块 os模块提供了很多允许你的程序与操作系统直接交互的功能. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名:os.listdir() 函数用来删除一个文件:os.remove() 删除多个目录:os.removedirs(r"c:\python") 检验给出的路径是否是一个文件:os.path.isfile() 检验给出的路径是否是一个目录:os.path.isdir(

Python常用模块——系统调用sys模块

Python常用模块--系统调用sys模块 sys 模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称 sys.stdout.write('please:') #标准输出 , 引出进度条的例子