zoukankan      html  css  js  c++  java
  • 那些年被我坑过的Python——道阻且长(第五章实用模块讲解)

    random模块

      我的随机验证吗程序:

       首先保证了字母和数字出现的概率是50% VS 50%,其次是可以订制输出多少位

     1 def Captcha(size):
     2     Captcha_list = []
     3     for i in range(size):
     4         rand_num = random.randint(1, 2)
     5         if rand_num == 1:
     6             Captcha_list.append(chr(random.randint(65, 90)))
     7         elif rand_num == 2:
     8             Captcha_list.append(str(random.randint(0, 9)))
     9         else:
    10             pass
    11     return ''.join(Captcha_list)
    随机验证码程序

      

    time模块

      时间日期常用的模块有time和datetime,datetime是对time的高级封装

       时间的格式有三种,互相之间可以进行相互转化,分别是:

       1、时间戳格式,是一串距1970-01-01至今的秒数time.time()

    time.time()

       2、时间结构体 time.localtime()

    time.localtime()

       3、格式化后的时间字符串,格式化表达式类似于秘钥对时间进行加密,加密后的效果为格式化的时间,同样也可使用表达式进行反解

    # 日期字符串转成时间戳
    string_2_struct = time.strptime("2016/05/22","%Y/%m/%d")
    print(string_2_struct)
    
    #将struct时间对象转成时间戳
    struct_2_stamp = time.mktime(string_2_struct) 
    print(struct_2_stamp)
    
    # 将utc时间戳转换成struct_time格式
    print(time.gmtime(time.time()-86640))
    
    #将utc struct_time格式转成指定的字符串格式
    print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()))

    shelve模块

      一个很方便的序列化工具,以key value的形式持久化python对象

    # 完全可以把shelve看成一个文件字典
    with shelve.open(filename, flag='c') as sdb:
        sdb[key] = value

      具体的使用其实和字典没什么两样,增改操作就是对shelv_obj[key] = value,删除操作使用del关键字即可

    del shelve_obj[key]

    logging模块

    一些说明:

    logging.basicConfig函数各参数:
    filename: 指定日志文件名
    filemode: 和file函数意义相同,指定日志文件的打开模式,'w'或'a'
    format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
     

    %(levelno)s: 打印日志级别的数值
     %(levelname)s: 打印日志级别名称
     %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
     %(filename)s: 打印当前执行程序名
     %(funcName)s: 打印日志的当前函数
     %(lineno)d: 打印日志的当前行号
     %(asctime)s: 打印日志的时间
     %(thread)d: 打印线程ID
     %(threadName)s: 打印线程名称
     %(process)d: 打印进程ID
     %(message)s: 打印日志信息
    datefmt: 指定时间格式,同time.strftime()
    level: 设置日志级别,默认为logging.WARNING
    stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略

     1 '''
     2 log_handler = logging.basicConfig(level=logging.DEBUG,
     3                                   format='%(asctime)s [%(levelname)s]: %(message)s',
     4                                   datefmt='%Y%m%d %H:%M:%S',
     5                                   filename=LOG_DIR,
     6                                   filemode='w')
     7 '''
     8 # 创建日志对象
     9 logger = logging.getLogger('TEST-LOG')
    10 
    11 # 设定日志的底线级别
    12 logger.setLevel(logging.DEBUG)
    13 
    14 # 创建日志的文件操作句柄
    15 fh = logging.FileHandler(LOG_DIR,encoding='utf-8')
    16 fh.setLevel(logging.DEBUG)
    17 
    18 # 设定全局格式表达式
    19 formatter = logging.Formatter('%(asctime)s [%(levelname)s]: %(message)s')
    20 
    21 # 加载格式表达式
    22 fh.setFormatter(formatter)
    23 
    24 # 启用文件句柄记录日志,实现对日志文件的操作
    25 logger.addHandler(fh)
    26 
    27 
    28 # 记录相应级别的日志,如果低于全局日志底线级别的,则不会被记录
    29 logger_obj.info("账号<%s> 进行了%s操作 金额变化:(%s) 金额%s利息%s 余额为%s"
    30                                % (srcaccount_data['id'],
    31                                   type,
    32                                   TRANSACTION_TYPE[type]["action"],
    33                                   amount,
    34                                   interest,
    35                                   src_new_balance)
    36                                )
    logging模块使用简述

    sys和os模块

     1 sys.argv           命令行参数List,第一个元素是程序本身路径
     2 sys.exit(n)        退出程序,正常退出时exit(0)
     3 sys.version        获取Python解释程序的版本信息
     4 sys.maxsize        最大的Int值
     5 sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
     6 sys.platform       返回操作系统平台名称
     7 sys.stdout.write('please:')
     8 val = sys.stdin.readline()[:-1]
     9 
    10 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
    11 os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
    12 os.curdir  返回当前目录: ('.')
    13 os.pardir  获取当前目录的父目录字符串名:('..')
    14 os.makedirs('dirname1/dirname2')    可生成多层递归目录
    15 os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
    16 os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
    17 os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
    18 os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
    19 os.remove()  删除一个文件
    20 os.rename("oldname","newname")  重命名文件/目录
    21 os.stat('path/filename')  获取文件/目录信息
    22 os.sep    输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
    23 os.linesep    输出当前平台使用的行终止符,win下为"	
    ",Linux下为"
    "
    24 os.pathsep    输出用于分割文件路径的字符串
    25 os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
    26 os.system("bash command")  运行shell命令,直接显示
    27 os.environ  获取系统环境变量
    28 os.path.abspath(path)  返回path规范化的绝对路径
    29 os.path.split(path)  将path分割成目录和文件名二元组返回
    30 os.path.dirname(path)  返回path的目录。其实就是os.path.split(path)的第一个元素
    31 os.path.basename(path)  返回path最后的文件名。如何path以/或结尾,那么就会返回空值。即os.path.split(path)的第二个元素
    32 os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
    33 os.path.isabs(path)  如果path是绝对路径,返回True
    34 os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
    35 os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
    36 os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
    37 os.path.getatime(path)  返回path所指向的文件或者目录的最后存取时间
    38 os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
    sys和os

    hmac模块

      还是比较简单的,不过,无论是加密的key还是加密的value都需要是bytes类型

       .new()需要传入key也就是加密的口令

       .update()是传入加密的明文

       .hexdigest()是以16进制的字符显示加密后的密码

    account = input("请输入账号:")
    password = input("请输入密码:")
    
    encrypt = hmac.new(bytes(account.encode(encoding='utf-8')))
    encrypt.update(bytes(password.encode(encoding='utf-8')))
    encrypted_password = str(encrypt.hexdigest())
    print(encrypted_password)
  • 相关阅读:
    Word快捷键大全
    IT人物TOP100英雄人物榜
    关于简历的理解
    opengl头文件:错误: 无法打开包括文件:“gl/glut.h”: No such file or directory
    关于两次算法竞赛的心得
    MFC中关于将控件与成员变量绑定,实现用子类重载控件
    怎么入门
    正则表达式
    每天更新,督促自己学习
    测试人员的出路
  • 原文地址:https://www.cnblogs.com/tntxyz/p/5809108.html
Copyright © 2011-2022 走看看