logging模块
import logging from logging import handlers
#1.生成loger 对象 logger = logging.getLogger("web") #日志级别过滤顺序:全局-->haddler 全局默认是warning,那么不设置的情况下控制台和文件只能在warning级别的基础上进行设置,不能输出info和debug # logger.setLevel(logging.INFO) #1.1 filter加进logger class IgnoreShit(logging.Filter): def filter(self,record): return "shit" not in record.msg #过滤掉含有shit的日志 logger.addFilter(IgnoreShit()) #2.生成haddler 对象 ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) # fh = logging.FileHandler("ch_fg_test.log") #当日志文件达到10bytes的时候,之前的日志重命名,最多存在3个,超过3个删除 fh = handlers.RotatingFileHandler("web.log",maxBytes=10,backupCount=3) #每5秒生成一个新的日志文件,之前的日志重命名,最多存在3个,超过3个删除 fh2 = handlers.TimedRotatingFileHandler("web.log",when="S",interval=5,backupCount=3) fh.setLevel(logging.DEBUG) #2.1.生成handler绑定loger 对象 logger.addHandler(ch) logger.addHandler(fh) #3.生成formatter 对象 file_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') console_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(lineno)d - %(message)s') #3.1.生成formatter绑定filter 对象 ch.setFormatter(console_formatter) fh.setFormatter(file_formatter) logger.debug("test debug") logger.info("test info") logger.warning("test warning") logger.error("test error") logger.error("test shit error")
excel模块
import xlrd,xlwt,xlutils,os from xlutils.copy import copy book=xlrd.open_workbook('stu.xls')#打开一个excel文件对象 sheet=book.sheet_by_name('Sheet1')#通过sheet 名称指定工作sheet # sheet=book.sheet_by_index(0)#通过sheet 索引指定工作sheet all_sheets=book.sheet_names()#获取所有sheet名称,返回一个list print(all_sheets) print(sheet.cell(0,0).value)#通过cell获取指定坐标的数据 print(sheet.nrows)#获取sheet页的行数 print(sheet.ncols)#获取sheet页的列数 print(sheet.row_values(0))#获取指定行数的数据 print(sheet.col_values(0))#获取指定列数的数据 workbook=xlwt.Workbook()#打开一个excel文件对象 wsheet=workbook.add_sheet('sheet1')#添加一个sheet wsheet.write(0,0,'test')#写入数据 workbook.save('test.xls')#保存excel,后缀必须是.xls,否则报错 ubook=xlrd.open_workbook('stu.xls')#打开一个excel文件对象 mbook=copy(ubook)#复制读到的文件对象 msheet=mbook.get_sheet(0)#获取sheet页,注意这里只能用get_sheet(0)方法,指定下标 msheet.write(0,0,'new_data')#写入数据 mbook.save('new.xls')#保存数据 os.remove('stu.xls') os.rename('new.xls','stu.xls')
redis模块
import redis
coon=redis.Redis(host='192.168.217.128',password='123456',port=6379,db=1) print(coon.hget('Idcards','花校纳').decode())#decode转码,这里get到的数据是bytes格式的,需要转码 coon.set('葛怕愿',123456789) print(coon.get('戴铁视').decode()) coon.hset('Idcards','牛逼',123456789) print(coon.hget('Idcards','牛逼').decode()) print(coon.keys())#数据库上所有的key res=coon.hgetall('Idcards') for i in res: print(i.decode(),':',res[i].decode()) coon.delete('yxg')#删除数据,yxg是key # 需求是把一个redis库里面所有的数据,导入到另一个redis里面 # 1、r1 和r2 连接上r1和r2两个数据库 # 2、 获取到r1上面所有的key keys # 3、判断key的类型,r.type(k),get hgetall .hset() .set() r1=redis.Redis(host='211.149.218.16',port=6378,password='123456',db=2)#获取数据 r2=redis.Redis(host='211.149.218.16',port=6378,password='123456',db=3)#写数据 keys = r1.keys()#r1数据库上所有的key for k in keys: if r1.type(k)==b'hash':#判断是否为哈希类型,因为redis里面返回的数据都是bytes类型的, #所以在hash前面加上b hash_data = r1.hgetall(k)#获取哈希的类型的数据 for k2,v in hash_data.items():#循环刚才获取到的字典 r2.hset(k,k2,v)#set哈希类型的值 else: v = r1.get(k)#从r1里面获取值, r2.set(k,v)#set进去
mysql模块
import pymysql from pymysql.cursors import DictCursor coon=pymysql.connect(host='localhost',port=3306,user='root',password='root',db='test',charset='utf8') cur=coon.cursor(DictCursor) cur.execute('select * from stu') res=cur.fetchall() print(res) for i in res: print(i) cur.close() coon.close()