模块 json,sys,pickle,logging

…衆ロ難τιáo~ 提交于 2020-01-31 03:53:55

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_objlogger_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'])
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!