zoukankan      html  css  js  c++  java
  • 模块 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) # 1data=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'])
  • 相关阅读:
    [No0000F0]DataGrid一行Row添加ToolTip,wpf
    [No0000EE]主要的宏观经济指标查询
    [No0000E9]Microsoft Help Viewer 2.3绿色版
    [No0000F2]ip安全监视器
    [No0000ED]IPSec策略之管理
    [No0000EC]C# 字符串(String)
    [No0000EB]C# 数组(Array)
    [No0000EA]C# 可空类型(Nullable)
    [No0000E8]C# 方法 参数传递
    [No0000E7]C# 封装 与访问修饰符
  • 原文地址:https://www.cnblogs.com/gyh04541/p/7087768.html
Copyright © 2011-2022 走看看