python模块sys,log,json,pickle

sys模块

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

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

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

print(sys.argv)
执行结果
['F:\Pycharmprojects\0622\classtest.py']
import sys
ret=sys.argv
username=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--debug
2017-06-22 20:14:34,899,38---root--info
2017-06-22 20:14:34,900,39---root--error
2017-06-22 20:14:34,900,40---root--warning
2017-06-22 20:14:34,900,41---root--critical

序列化

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

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

方法一
序列化
import json
dic={'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 json
dic={'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