# 面对对象三大特性 #继承 #单继承 #多继承 #多态:python天生支持,鸭子类型(list和tuple) #封装:私有的(__变量) # @property # @classmethod # @staticmethod # 面对对象进阶 #issubclass isinstance #反射 hasattr getattr #内置方法: #__new__创建self构造方法 #__call__ 对象() # 创建一个配置文档 # import configparser # # config = configparser.ConfigParser() # # config["DEFAULT"] = {'ServerAliveInterval': '45', # 'Compression': 'yes', # 'CompressionLevel': '9', # 'ForwardX11':'yes' # } # # config['bitbucket.org'] = {'User':'hg'} # # config['topsecret.server.com'] = {'Host Port':'50022','ForwardX11':'no'} # # with open('example.ini', 'w') as configfile: # # config.write(configfile) # import configparser # # config = configparser.ConfigParser() # # #---------------------------查找文件内容,基于字典的形式 # # print(config.sections()) # [] # # config.read('example.ini') # # print(config.sections()) # ['bitbucket.org', 'topsecret.server.com'] # # print('bytebong.com' in config) # False # # print('bitbucket.org' in config) # True # # print(config['bitbucket.org']["user"]) # hg # # print(config['DEFAULT']['Compression']) #yes # # print(config['topsecret.server.com']['ForwardX11']) #no # # print(config['bitbucket.org']) #<Section: bitbucket.org> # # for key in config['bitbucket.org']: # 注意,有default会默认default的键 # # print(key) # # print(config.options('bitbucket.org')) # 同for循环,找到'bitbucket.org'下所有键 # # print(config.items('bitbucket.org')) #找到'bitbucket.org'下所有键值对 # # print(config.get('bitbucket.org','compression')) # yes get方法Section下的key对应的value # import configparser #增删改 # config = configparser.ConfigParser() # config.read('example.ini') # config.add_section('yuan') # config.remove_section('bitbucket.org') # config.remove_option('topsecret.server.com',"forwardx11") # config.set('topsecret.server.com','k1','11111') # config.set('yuan','k2','22222') # config.write(open('new2.ini', "w")) # logging模块 import logging # logging.debug('debug message') # logging.info('info message') # logging.warning('warning message') # logging.error('error message') # logging.critical('critical message') # 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='test.log', # filemode='w') # # logging.debug('debug message') # logging.info('info message') # logging.warning('warning message') # logging.error('error message') # logging.critical('critical message') import logging logger = logging.getLogger() # 创建一个handler,用于写入日志文件 fh = logging.FileHandler('test.log',encoding='utf-8') # 再创建一个handler,用于输出到控制台 ch = logging.StreamHandler() formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') fh.setLevel(logging.DEBUG) fh.setFormatter(formatter) ch.setFormatter(formatter) logger.addHandler(fh) #logger对象可以添加多个fh和ch对象 logger.addHandler(ch) logger.debug('logger debug message') logger.info('logger info message') logger.warning('logger warning message') logger.error('logger error message') logger.critical('logger critical message')