那些年被我坑过的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下为"\t\n",Linux下为"\n"
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)
时间: 2024-10-12 04:01:15

那些年被我坑过的Python——道阻且长(第五章实用模块讲解)的相关文章

『Python』Numpy学习指南第五章_矩阵和通用函数

简单的矩阵生成以及合并操作: np.mat('1 2 3;4 5 6;7 8 9')np.bmat('A B;B A')np.arange(1,10).reshape(3,3) 1 import numpy as np 2 3 4 5 '''通用函数''' 6 7 # 字符串创建矩阵 8 # 也可以使用数组创建 9 A = np.mat('1 2 3;4 5 6;7 8 9') 10 # 数组创建矩阵 11 A = np.mat(np.arange(1,10).reshape(3,3)) # n

Python创建模块(第五章:模块)

模块提供了一种程序之间共享python代码的便捷方式.python提供了几百个模块的库,您可以在脚步中调用它们,也可以创建自己的模块. 本章介绍 研究模块的内部机制 创建一个仅包含函数的模块 在模块中定义类 通过子类扩展类 定义异常来报告错误状态 为模块建立文档 测试模块 将模块作为程序运行 安装模块 5.1研究模块 模块只是一个python源文件,它可以包含变量,类,函数和python脚本中可用到的其他任何元素. 通过使用dir函数可以更好地理解模块,给dir函数传递某个python元素(例如

Python:从入门到实践--第五章--if语句--练习

#1.编写一系列条件测试:将每个测试以及结果打印出来 car = '宝马' if car == "宝马": print("预测正确") print(car) else: print("预测错误") boy_age = 23 girl_age = 20 if boy_age <= girl_age: print("预测错误") else: print("预测正确") print("男孩大于女孩

python基础第十五章------------数学模块:math

数学模块:math 这个模块学习时要对比前面的内建函数 导入包:import  math 返回整型的函数  (ceil,floor对比内建函数中的round): ceil():向上取整(只要有小数点,就往上近1) import mathres=math.ceil(6.5)print(res) floor():向下取整(小数点后面的数字会删除) import mathres=math.floor(6.999)print(res) 返回浮点型的函数: pow():计算一个数的N次方 print(ma

python第五章函数

第五章 函数 5.1三元运算/三目运算 v = 前面 if 条件语句 else 后面 #如果条件成立,"前面"赋值给v,否则后面赋值给v. v = a if a>b else b # 取a和b中值较大的赋值给v # 让用户输入值,如果值是整数,则转换成整数,否则赋值为None data = input('请输入值:') value = int(data) if data.isdecimal() else None 5.2 函数 5.2.1.函数介绍 截止目前为止,都是面向过程式编

Python之路【第十五篇】:Web框架

Python之路[第十五篇]:Web框架 Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #!/usr/bin/env python #coding:utf-8   import socket   def handle_request(client):     buf = client.recv(10

Python学习第三天(一个简单制作导入模块)

Python一个简单的模块制作和导入 一个简单的模块 [[email protected] python]# cat my.py name = 'I am wuang!' 导入模块 >>> import my >>> print my.name I am wuang! 直接导入模块属性名字 >>> from my import name >>> print name I am wuang!

《Python核心编程》 第五章 数字 - 课后习题

课后习题  5-1 整形. 讲讲 Python 普通整型和长整型的区别. 答:普通整型是绝大多数现代系统都能识别的. Python的长整型类型能表达的数值仅仅与你机器支持的(虚拟)内存大小有关. 5-2 运算符 (a) 写一个函数,计算并返回两个数的乘积 (b) 写一段代码调用这个函数,并显示它的结果 答: def pro(a,b): p = a*b return p a = int(raw_input("a=")) b = int(raw_input("b="))

进击的Python【第五章】:Python的高级应用(二)常用模块

Python的高级应用(二)常用模块学习 本章学习要点: Python模块的定义 time &datetime模块 random模块 os模块 sys模块 shutil模块 ConfigParser模块 shelve模块 xml处理 re正则表达式 一.Python模块的定义 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt这个函数,必须用语句"#include<math.h>"引入math.h这个头文件,否则是无法正常进行调用的.那么在Python中,如