zoukankan      html  css  js  c++  java
  • day 16

    os模块

    os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口,多用于文件处理

    对文件操作

    import os
    
    # 判断是否为文件
    res = os.path.isfile(r' ')
    print(res)
    
    # 删除文件
    os.remove(r' ')
    
    # 重命名文件
    os.rename(r' ',r' ')
    

    对文件夹操作

    import os
    
    # 对文件夹操作
    
    ## 判断是否为文件夹
    os.path.isdir()
    
    ## 创建文件夹
    os.mkdir(r' ')
    
    ## 删除文件夹
    os.redir(r' ')
    
    ## 列出文件夹内所有的文件(重要)
    res = os.listdir(r' ')
    print(res)
    
    # 辅助性的
    
    ## 当前文件的所在的文件夹
    res = os.getcwd()
    print(res)
    
    ## 当前文件所在的具体路径
    ## __file__ pycharm独有
    print(' __file__ :', __file__ )
    res = os.path.abpath(__flie__) # 根据不同的操作系统,跟换不同的/或
    print(res)
    
    ## 文件的文件夹
    res = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
    print(res)
    
    ## 拼接文件路径
    res = os.path.join(os.path.dirname(os.path.abspath(__file__))
    print(res)
                       
    ## 判断路径是否存在(文件or文件夹适用)
    res = os.path.exists(r'')
                       
    # 了解
                      
    ## 执行终端代码
    res = os.system('dir')
    print(res)           
    

    sys模块

    最常用

    当使用命令行式运行文件,接收多余的参数

    import sys
    
    res = sys.argv
    print(res)
    
    
    # import requests
    print(sys.modules.key())
    
    # requests = __import__ ('requests')
    
    
    # 了解
    print(sys.api_version)
    
    print(sys.copyright)
    
    print(sys.version)
    
    print(sys.hexversion)
    

    json和pickle模块

    序列化

    按照特定的规则排列(json串--》跨平台交互,传输数据)

    反序列化

    按照特定的规则把json串转换成python/java/c/php需要的数据类型

    json模块

    跨平台数据交互,json串

    import json
    
    dic = [1,(1,2)]
    
    res = json.dumps(dic) # json串中没有单引号
    print(type(res),res)  # 跨平台数据交互
    
    res = json.loads(res)
    print(type(res).res)
    
    
    dic = {'a': True,'b': None}
    
    # 序列化字典为json串,并保存文件
    import json
    def dic():
        print('func')
       
    with open('test.json','w',encoding='utf8')as fw:
        json.dump(dic,fw)
       
    # 反序列化
    with open('test.json','r',encoding='utf8')as fr:
    	data = json.load(fr)
        print(type(data),data)
       
    goods = {
        1:'wawa',
    }
    
    with open('nick.json','r',encoding='utf8')as fr:
        data = json.load(fr)
        data['wawa'] = 1
        data['extra'] -= 10
        data['locked'] = 1
       
    with open('nick.json','w',encoding='utf8')as fw:
        json.dump(data.fw)
         
    

    pickle模块

    不跨平台,针对python所有数据类型,如集合,使用方式和json一模一样.

    import pickle	# --》未来存对象(存对象名)
    
    def func():		# 针对地址而言,只存了一个函数名
        print('func')
       
    with open('test.pkl','wb')as fw:
        pickle.dump(func,fw)
       
    def func():
        print()
       
    with open('test.pkl','rb')as fr:
        data = pickle.load(fr)
        print(type(data),data)
        data() # func()
        
    

    logging 模块

    低配logging

    日志总共分为以下五个级别,这五个级别自下而上进行匹配 debug-->info-->warning-->error-->critical,默认最低级别为warning

    v1

    import logging
    
    logging.debug('调试信息')
    logging.info('正常信息')
    logging.warning('警告信息')
    logging.error('报错信息')
    logging。critical('严重错误信息')
    
    WARNING:root:警告信息
    ERROR:root:报错信息
    CRITICAL:root:严重错误信息        
    

    v1版本无法指定日志的级别;无法指定日志的格式;只能往屏幕打印,无法写入文件。

    v2

    import logging
    
    # 日志的基本配置
    
    logging.basicConfig(filename='access.log',
                        format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
                        datefmt='%Y-%m-%d %H:%M:%S %p',
                        level=10)
    
    logging.debug('调试信息')  # 10
    logging.info('正常信息')  # 20
    logging.warning('警告信息')  # 30
    logging.error('报错信息')  # 40
    logging.critical('严重错误信息')  # 50
    
    可在logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有:
        
    filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。
    filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
    format:指定handler使用的日志显示格式。
    datefmt:指定日期时间格式。
    level:设置rootlogger(后边会讲解具体概念)的日志级别
    stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。
    
    
    format参数中可能用到的格式化串:
    
    %(name)s Logger的名字
    %(levelno)s 数字形式的日志级别
    %(levelname)s 文本形式的日志级别
    %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
    %(filename)s 调用日志输出函数的模块的文件名
    %(module)s 调用日志输出函数的模块名
    %(funcName)s 调用日志输出函数的函数名
    %(lineno)d 调用日志输出函数的语句所在的代码行
    %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
    %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
    %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
    %(thread)d 线程ID。可能没有
    %(threadName)s 线程名。可能没有
    %(process)d 进程ID。可能没有
    %(message)s用户输出的消息
    

    v2版本不能指定字符编码:只能往文件中打印

    v3

    logging模块包含四种角色:logger、filter、formatter对象、handler

    1.logger:产生日志的对象。

    2.filter:过滤日志的对象

    3.formatter对象:可以定制不同的日志格式对象,然后绑定给不同的handler对象使用,以此来控制不同的handler的日志格式

    4.handler:接收日志然后控制打印到不同的地方,filehandler用来打印到文件中,streamhandler用来打印到终端

    # 自定义配置
    
    # 1. 配置logger对象
    nick_logger = logging.Logger('nick')
    json_logger = logging.Logger('jason')
    
    # 2. 配置格式
    formmater1 = logging.Formatter('%(asctime)s - %(name)s -%(thread)d - %(levelname)s -%(module)s:  %(message)s',
                                   datefmt='%Y-%m-%d %H:%M:%S %p ', )
    
    formmater2 = logging.Formatter('%(asctime)s :  %(message)s',
                                   datefmt='%Y-%m-%d %H:%M:%S %p', )
    
    formmater3 = logging.Formatter('%(name)s %(message)s', )
    
    # 3. 配置handler --> 往文件打印or往终端打印
    h1 = logging.FileHandler('nick.log')
    h2 = logging.FileHandler('json.log')
    sm = logging.StreamHandler()
    
    # 4. 给handler配置格式
    h1.setFormatter(formmater1)
    h2.setFormatter(formmater2)
    sm.setFormatter(formmater3)
    
    # 5. 把handler绑定给logger对象
    nick_logger.addHandler(h1)
    nick_logger.addHandler(sm)
    json_logger.addHandler(h2)
    
    # 6. 直接使用
    nick_logger.info(f'nick 购买 变形金刚 4个')
    # json_logger.info(f'json 购买 变形金刚 10个')
    
    
  • 相关阅读:
    BZOJ3439: Kpm的MC密码
    BZOJ2819: Nim
    BZOJ1901: Zju2112 Dynamic Rankings
    Bzoj3230: 相似子串
    Bzoj4504: K个串
    CF609E. Minimum spanning tree for each edge
    bzoj1832: [AHOI2008]聚会
    css 笔记1
    namespace 相关
    cmd 命令
  • 原文地址:https://www.cnblogs.com/colacheng0930/p/11600886.html
Copyright © 2011-2022 走看看