模块 json,sys,pickle,logging
Posted 谷永辉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模块 json,sys,pickle,logging相关的知识,希望对你有一定的参考价值。
sys模块
sys.argv 命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0)
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
========================================================sys.argv de 作用
返回的命令是列表,通过列表把用户名和密码直接赋值
-------------------------------------sys.path 添加模块的路径,导入使用
============================logging 日志模块
import logging
写日志文件的级别,依次增加权限
logging.debug(\'debug message\')
logging.info(\'info message\')
logging.warning(\'warning message\')
logging.error(\'error message\')
logging.critical(\'critical message\')
日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICAL。
DEBUG:详细的信息,通常只出现在诊断问题上
INFO:确认一切按预期运行
WARNING:一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作。
ERROR:更严重的问题,软件没能执行一些功能
CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行
这5个等级,也分别对应5种打日志的方法: debug 、info 、warning 、error 、critical。默认的是WARNING,当在WARNING或之上时才被跟踪
默认打印三种级别
====文件输出到屏幕 用basicConfig模块
把日志写到文件里-------- 用basicConfig模块
日志文件固定格式 ,basicConfig只能在屏幕上或者是在文件里写, 是有缺陷的
import logging
logging.basicConfig(level=logging.DEBUG,
format=\'%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s\',
datefmt=\'%a, %d %b %Y %H:%M:%S\',
filename=\'/tmp/test.log\',
filemode=\'w\')
logging.debug(\'debug message\')
logging.info(\'info message\')
logging.warning(\'warning message\')
logging.error(\'error message\')
logging.critical(\'critical message\')
=======logging.getlogger
因为级别,纸打印error
----用logging.getlogger() 同时输出
定义一个函数写日志文件
def get_logger():
logger_obj=logging.getLogger()
print(type(logger_obj))
fh=logging.FileHandler("logger_file.txt")
fh.setLevel(logging.ERROR)
ch=logging.StreamHandler()
ch.setLevel(logging.CRITICAL)
formater=logging.Formatter(\'%(asctime)s - %(name)s - %(levelname)s - %(message)s\')
fh.setFormatter(formater)
ch.setFormatter(formater)
logger_obj.addHandler(fh)
logger_obj.addHandler(ch)
#logger_obj.setLevel(logging.DEBUG)
return logger_obj
logger_obj=get_logger()
logger_obj.info("info")
logger_obj.error("error")
logger_obj.warning("warning")
logger_obj.debug("debug")
logger_obj.critical("critical")
======================
json 序列化
import json
--------------------序列化
dic={\'name\':\'wuhao\',"age":32}
f=open("json_data2.txt","w") #创建一个文件把信息写到文件里
方式一
data=json.dumps(dic) #json.dumps 就是调用要序列化的对象
print(data)
print(type(data))
f.write(data) #写到文件里
方式二
json.dump(dic,f) # 1、data=json.dumps(dic) 2、 f.write(data) #做了两个事情
f.close()
----反序列化 json.loads
JSON表示的对象就是标准的javascript语言的对象一个子集,JSON和Python内置的数据类型对应如下:
=====注意 json 的格式必须是 ‘’ ” 双引号,否则就不是标准的序列化,Python中 ,单双引号无所谓
pickle模块
##----------------------------序列化
import pickle
dic={\'name\':\'alvin\',\'age\':23,\'sex\':\'male\'}
print(type(dic))#<class \'dict\'>
j=pickle.dumps(dic)
print(type(j))#<class \'bytes\'>
f=open(\'序列化对象_pickle\',\'wb\')#注意是w是写入str,wb是写入bytes,j是\'bytes\'
f.write(j) #-------------------等价于pickle.dump(dic,f)
f.close()
#-------------------------反序列化
import pickle
f=open(\'序列化对象_pickle\',\'rb\')
data=pickle.loads(f.read())# 等价于data=pickle.load(f)
print(data[\'age\'])
shelve模块
shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型
1
2
3
4
5
6
7
8
9
10
11
12
|
import shelve f = shelve. open (r \'shelve.txt\' ) # f[\'stu1_info\']={\'name\':\'alex\',\'age\':\'18\'} # f[\'stu2_info\']={\'name\':\'alvin\',\'age\':\'20\'} # f[\'school_info\']={\'website\':\'oldboyedu.com\',\'city\':\'beijing\'} # # # f.close() print (f.get( \'stu_info\' )[ \'age\' ]) |
以上是关于模块 json,sys,pickle,logging的主要内容,如果未能解决你的问题,请参考以下文章
python之路---23 模块 os sys pickle json
os模块,sys模块,json / pickle模块,logging模块
Python基础第十三天——sys模块logging模块json模块pickle模块