博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python模块sys,log,json,pickle
阅读量:6417 次
发布时间:2019-06-23

本文共 3140 字,大约阅读时间需要 10 分钟。

sys模块

sys.exit(n)  退出程序,正常退出时exit(0)

import syscount=1while count<10:    print('ok')    if count==8:        sys.exit()    count+=1print('ending') #sys.exit()之后的代码不会执行,程序已经结束

sys.argv 命令行参数List,第一个元素是程序本身路径

print(sys.argv)执行结果['F:\\Pycharmprojects\\0622\\classtest.py']
import sysret=sys.argvusername=ret[ret.index('u')+1]password=ret[ret.index('p')+1]if username=='xiaobai' and password=='123':    print('login')

 

logging模块

logging.basicConfig(level=logging.ERROR,                    format='%(asctime)s,%(lineno)s---%(name)s--%(message)s')logging.debug('debug message')logging.info('info message')logging.warning('warning message')logging.error('error message')logging.critical('critical message') 输出结果

  2017-06-22 19:54:56,240,22---root--error message

  2017-06-22 19:54:56,240,23---root--critical message

logging模块只能单一输出,只能文件或者屏幕显示其中的一种默认情况下logging模块打印大于等于waring级别的日志,可以通过level来进行级别设置来获取不同级别的日志信息,级别:critical>error>warning>info>debug
logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有:filename:用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中。filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。format:指定handler使用的日志显示格式。datefmt:指定日期时间格式。level:设置rootlogger(后边会讲解具体概念)的日志级别stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件(f=open(‘test.log’,’w’)),默认为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用户输出的消息

logger

logger_obj=logging.getLogger()fh=logging.FileHandler('logger_file.txt') #输出到文件ch=logging.StreamHandler() #输出到控制台formatter=logging.Formatter('%(asctime)s,%(lineno)s---%(name)s--%(message)s') #格式设定fh.setFormatter(formatter) #对输出到文件的数据进行格式化ch.setFormatter(formatter) #对输出到控制台的数据进行格式化logger_obj.setLevel(logging.DEBUG) #级别设置logger_obj.addHandler(fh) #添加输出文件logger_obj.addHandler(ch) #添加输出控制台logger_obj.debug('debug')logger_obj.info('info')logger_obj.error('error')logger_obj.warning('warning')logger_obj.critical('critical')执行结果2017-06-22 20:14:34,899,37---root--debug2017-06-22 20:14:34,899,38---root--info2017-06-22 20:14:34,900,39---root--error2017-06-22 20:14:34,900,40---root--warning2017-06-22 20:14:34,900,41---root--critical

序列化

把对象(变量)从内存中变成可存储或者传输的过程称之为序列化。把变量内容从序列化的对象重新读到内存里称之为反序列化。

json模块:json类型和python类型数据的对应

方法一序列化import jsondic={
'name':'xiaobai','age':22}f=open('classtest.txt','w')data=json.dumps(dic)print(data)print(type(data))f.write(data)f.close()反序列化f=open('classtest.txt','r')data=f.read()dic=json.loads(data)print(dic)print(type(dic)) 执行结果

{'name': 'xiaobai', 'age': 22}

<class 'dict'>

方法二序列化import jsondic={
'name':'xiaobai','age':22}f=open('classtest2.txt','w')json.dump(dic,f)f.close()反序列化f=open('classtest2.txt','r')dic=json.load(f)print(dic)f.close()执行结果{
'name': 'xiaobai', 'age': 22}

 

转载于:https://www.cnblogs.com/c491873412/p/7067225.html

你可能感兴趣的文章
揪出MySQL磁盘消耗迅猛的真凶
查看>>
和“C”的再遇
查看>>
一键安装kubernetes 1.13.0 集群
查看>>
RabbitMq的集群搭建
查看>>
spring boot + mybatis 同时访问多数据源
查看>>
URL中汉字转码
查看>>
[转]go正则实例
查看>>
Selector中关于顺序的注意事项
查看>>
小黑小波比.清空<div>标签内容
查看>>
Java中的ExceptionInInitializerError异常及解决方法
查看>>
Spring 注入bean时的初始化和销毁操作
查看>>
java线程同步原理(lock,synchronized)
查看>>
MyEclipse中使用Hql编辑器找不到Hibernate.cfg.xml文件解决方法
查看>>
yRadio以及其它
查看>>
第四节 对象和类
查看>>
闪迪(SanDisk)U盘防伪查询(官方网站)
查看>>
Android onMeasure方法介绍
查看>>
无锁数据结构
查看>>
MySQL的变量查看和设置
查看>>
android onNewIntent
查看>>