logging模块补充,time模块

logging模块补充  

  1.如果执行文件不再项目根目录下,需要添加项目根目录到sys.path中
  2.调用业务逻辑
  import os,sys
  sys.path.append(sys.path.dirname(sys.path.dirname(__file__)))

 

time模块

  获取时间

    import time

    #浮点型的时间戳,从unix元年开始到现在的秒数

    print(time.time())  #通常用来计算时间差,不会直接给用户来看

    print(time.asctime()) #格林威治时间  格式

    print(time.ctime()) #格林威治时间  格式

 

  结构化时间(把时间拆开为不同部分)

    print(time.localtime()) #获取本地时间

    print(time.gmtime()) #世界时间 比中国晚了八个小时

 

  从结构化时间转为时间戳

    print(time.mktime(time.localtime()))

 

  将结构化时间转为格式化字符串时间

    print(time.strftime('%Y-%m-%d %H:%M:%S %p',time.localtime()))

 

  结构化可以单独获取某一个,比如年份,月份

    print(time.localtime().tm_year)

    print(time.strptime('2019-01-23 10:46:44','%Y-%m-%d %H:%M:%S'))

 

datetime模块

  获取当前时间,会根据时区自动转换

    print(datetime.datetime.now())

 

  创建datetime对象,指定时间

    print(datetime.datetime(year=2019,month=1,day=23)) #year,month,day可以省略但是默认的输入顺序要是年月日

 

  两个datetime可以进行减法运算,并且只能减

    d1 = datetime.datetime(2019,1,23)

    d2 = datetime.datetime(2019,1,24,10)

    print(d2-d1)

 

  可以单独获取某个部分

    print(d2.hour)

 

  时间差对象,表示30天

    d1 = datetime.timedelta(days=30)

 

  三十天以后是什么日子,时间差可以与datetime进行+或-

    print(datetime.datetime.now() + d1)

 

  两个时间差可以进行+ - /

    d2 = datetime.timedelta(days=1)

    d3 = datetime.timedelta(days=2)

    print(d3 - d2)

 

random  随机数相关模块

  计算机中的随机数都是伪随机

  随机数都是通过一个算法根据一个种子数计算得来的

  只要知道了种子数,随机数的结果就是固定的

  默认是使用当前的时间戳作为种子数  

    一些方法:

    print(random.random())  #从0 - 1不包含1和0

    print(random.randint(1,2))  #闭闭  包含开始和结束

    print(random.randrange(1,3))  #闭开  包含开始不包含结束

    print(random.uniform(0,2))  #不包含1的随机浮点数

    print(random.choice([1,2,3,4,5]))    #从列表中随机选一个

    print(random.sample([1,2,3,4,5],2))   #从列表中随机选出指定的个数

    

    #打乱顺序,比如洗牌

    li = [1,2,3,4,5,6]

    random.shuffle(li)

    print(li)

 

  随机获取验证码

    验证码都是数字和字母的组合

    长度为4  

    

  import random
  def get_auth_code(num):
  res = ''
  for i in range(num):
  #随机一个大写
  a = random.randint(65,90)
  #随机一个小写
  b = random.randint(97,122)
  #随机挑一个
  c = random.choice([a,b])
  #随机0-9
  d = random.randint(0,9)
  #在数字和字符之间随机挑一个
  e = random.choice([d,c])
  if e > 9:
  res += chr(e)
  else:
  res += str(e)
  return res
  print(get_auth_code(4))

 

sys模块

  获取/添加 环境变量

    print(sys.path)

 

  获取调用解释器时传递的参数,第一个永远是执行文件本身

    print(sys.argv)

 

  立即退出解释器

  状态码可以自定义,执行为0

    sys.exit(0)

 

    print(sys.modules)   #查看已经加载的所有模块

    print(sys.platform) #获取平台信息   

    print(sys.maxsize) #获取int最大值,在python中没有长度限制

    print(sys.version)     #获取解释器版本

 

pickle模块

  pickle是一个序列化模块

  序列化是指把一种数据类型转换成另一种数据类型,目的为了传输或存储数据

  pickle模块序列化得到的数据只能被pickle来反序列化

  如果你写的是一个单机程序,可以使用该模块

 

  对于网络应用程序而言,需要一种任何语言平台都能识别的数据类型

  这就是json和xml

  相关函数

  dump 将python数据类型转为字节

  dump封装了write函数的调用

  load是将字节转为python数据类型

  load封装了read函数的调用

 

  序列化的过程是从python数据类型转换为中间数据类型

  dic = {'name':'virgil','age':20}

  res = pickle.dumps(dic)

  with open('db.pic','wb') as f:

    f.write(res)

  反序列化指的是从中间数据类型恢复到python数据类型

  with open('db.pic','rb') as f:

    data = pickle.loads(f.read())

    print(type(data))

 

 










posted @ 2019-01-23 13:00  -Rye-  阅读(155)  评论(0)    收藏  举报