常用函数
name = '{wh}my \t name is {name},age is {age}.'
print(name.capitalize())                               # 字符串的开头字母大写
print(name.center(100, "+"))                              # 在字符串两边增加'+'号,使整个字符串的个数为50位置
print(name.endswith("."))                               # 判断是否以X结尾,返回布尔值
print(name.expandtabs(30))                              # 补充\t的次数\t按一个空格处理,\t一般为2个空格,但在字符串开头或者\n后为4个空格
print(name.find("n"))                                 # 查找字符串索引,如果不存在返回-1
print(name.rfind("n") # 从右边倒叙查找字符串索引,如不存在返回-1
print(name.index("n"))                                # 查找元素,如果不存在报错
print(name.count("z"))                                # 查找元素个数,如果不存在返回0
print(name.format(wh="nihao,", name="", age=100))                 # 格式化字符串
print('{:^10},{:6}'.format('username','password'))                #格式化输出扩展  username对应的:^10是右对齐10个字符后输出,password对应:6是默认左对齐6个字符后输出
print(name.format_map({'wh': 'huanying,', 'name': 'xiaoming', "age": ""}))     # 格式化字符串字典形式
print("sadads12313#$".isalnum())                           # 是否包含数字和字母
print("".isalpha())                                # 是否是英文
print("abc".isdigit())                                # 是否是数字
print(name.decimal())                                 # 是否是十进制数字
print("#¥&*……&*".isidentifier())                         # 是否是一个合法的变量名,不常用
print("asdadA".islower())                               # 判断字符串中是否全部小写
print("name".isupper())                                 # 判断字符串中是否全部是大写
print("@#@$#@QsaddsadS Sad ".istitle())                        # 判断是否首字母大写,后面小写,标题样式
print("___".join([name, "enen", "oo"]))                         # 拼接字符串 前为拼接符,后为拼接字符串,之后变成一个新的字符串
print("SAHD #@OAHDa sd ad".lower())                          # 全部变成小写
print("sahdk".upper())                                 # 全部变成大写
print(' \t \nmysql\t\n'.lstrip())                        # 去除左边的换行和空格
print(' \t \nmysql\t\n '.rstrip())                         # 去除右边的换行和空格
print(' \t \nmysql\t\n '.strip())                         # 去掉两边的换行和空格
print(" kongge ".isspace())                            # 判断是否全是空格 
print(" dasds ".split()                              # 去除两边空格并以字典形式返回
print(name.splitlines())                                # 以换行符分割字符串 
print("mysql is db".replace("mysql", "oracle"))                    # replace 全部替换
print("mysql is dbisis".rfind("is"))                          # 返回最右边字符的下标
print("1+2+3+4".split("+"))                              # 以+分割字符串,以list形式返回
print("1+2+3+4\n5+6+7+8".splitlines())                         # 以换行符字符串,以list形式返回
print("abcABC".swapcase())                               # 大小写全部反转
print("".zfill(2))                                 # 将前面字符串中的位数补充0后面填的位数,结果为01
print(name.endswith("{age}."))                             # 判断字符串结尾是否一致 返回布尔值
print(name.startswith("{age}."))                            # 判断字符串开头是否一致 返回布尔值
print(bin(12))                                     # 获取整数的二进数形式
print(name.ljust(50, '*'))                              # 在name的左边补充50个*  name.rjust()为在右侧
str1 = "Runoob example....wow!!!"                           # maketrans与tranlate的应用
l = ""                                      # l 和 r 字符串必须数量相同
r = "abcde"
res = str1.maketrans(r, l)                              # 把r替换为l在和str1比对,找到相同的并修改
print(str1.translate(res)                               # 打印结果为Runoo2 5x1mpl5....wow!!!
print(max(name))                                   # 返回字符串中的最大字母 优先小写字母 其次大写字母 其次数字 最后是特殊字符 min()最小
print(bool(''))                                    #布尔值判断,例子中返回false,非零或者空为true
print(round(3.1415926,2))                               #取小数位数,例子中参数为2所以返回3.14
print(sorted([1,3,400,234,23],reverse=True))                    #返回排序方式按降序排列,去掉revese按顺序排列
print(any([1,2,3,45]))                               #返回布尔值,判断list中只要有一个非零非空的值就返回True,否则返回false
print(all([1,2,3,45]))                               #返回布尔值,判断list中只要有一个零或者空的值就返回False,否则返回True
print(dir(name))                                   #查询方法,输出name的所有方法
print(eval("1+1"))                                  #执行一个字符串表达式,返回计算的结果,如例子中返回2,可以把执行简单的python代码
print(exec("print('nihao')"))                            #执行python代码,常用于浏览器形式的代码编辑软件,但是略微不安全
print(list(map(funcion,L)))                         #循环调用函数,然后保存函数返回值,放到一个list里,如果不加list返回的是一个生成器
#map的实例
# map(function, iterable, ...)
# Python 2.x
# 返回列表。
# Python3.x
# 返回迭代器。
#map会把iterable里的值依次放入function执行,返回迭代器
#案例1.
def f(x):
return x * x
l = [1, 2, 3, 4]
res = map(f, l)
print(list(res)) # [1, 4, 9, 16] #案例2:
l = [{'username': 'rainbol'}, {'username': 'Asdads'}, {'username': 'ASIUDHUASOIDH'}]
# 假设我们要把username的值变成为小写
def s(x):
return x.get('username').lower()
print(list(map(s, l)))#['rainbol', 'asdads', 'asiudhuasoidh']

 print(reduce(fuc,iter[...]))                            #序列中元素进行累计

   # reduce(function, iterable[, initializer])
from functools import reduce
# py3后将reduce放在functools里了
# reduce的作用是把list中的值依次拿去fuction里执行,如果有返回值会拿到返回值和下一个数去执行,直到拿完为止
# reduce做累加是个不错的选择
def fuc4(x, y):
print(x, y)
return x + y
res = reduce(fuc4, [1, 2, 3, 54, 123])
print(res) #
print(list(filter(funcion,L)))                          #过滤,循环调用函数,如果函数返回的值为真,那么就保存这个值
print(getattr(对象"函数名))                              #获取一个对象里面的属性(方法,变量),如果要使用这个方法就返回值加括号()
print(hasattr(模块,方法))                               #查看模块下是否有该方法,返回布尔值
print(isintance(对象,类))                               #判断参数1是否是参数2的类或者父类的实例,返回布尔值
数据类型转换
a = 1234
print(0x4d2)                                       #其他进制数输入直接转成10进制
print(hex(a))                                     #转成16进制数
print(oct(a))                                     #转成8进制数
print(bin(a))                                      #转成2进制数
print('asd'.encode())                                 #字符串转成二进制,返回b'asd';  'asd'.encode()将encode转换成utf-8编码
print(b'asd'.decode())                                 #二进制转成字符串,decode是bytes类型
print(chr(78))                                    #0-255内整数作为参数,返回一个对应的ascii码值
print(ord('a'))                                   #将一个字符转换成ascii码
b = ["1234",23,23,213,21341]
list(b)                                          #转成列表
tuple(b)                                         #转成元祖
dist(b)                                          #转成字典
int(a)                                          #转成整型
float(a)                                         #转成浮点型
res1= set(b)                                      #返回一个去重,无序,可变集合
res2 = frozenset(b)                                  #返回一个去重,无序,不可变的集合,两者区别:变量不能点出add和remove方法
b_str = str(b)                                   #str()一般是将数值转成字符串(返回一个字符串,包含对象的友好的可打印表示形式。对于字符串,它返回字符串本身)
b_repr = repr(b)                                  #repr()是将一个对象转成字符串显示
random模块
import random
print(random.sample([1,3,4,5,6],2))                        # 返回list中的随机两个元素,如位数超出会报错
print(random.randrange(100))                             # 返回一个从0到100之间的整数,包括0,不包括100
print(random.randrange(5,10,2))                         # 指定5到10之间并间隔(步长)为2整数
print(random.randint(1, 3))                              # 指定包括1包括3之间的整数
print(random.random())                                # 打印0到1之间的随机浮点数,包括0
print(random.uniform(1.1,32.2))                            # 打印一个1.1到32.2之间随机的浮点数
a = [1,23,4,5,6,7]
print(random.choice(a))                                # 指定a列表或者是元祖中随机取一个元素,列表为空报错
random.shuffle(a) print(a)                                  # 打乱a列表中的所有元素,注意输出为a而不能把它变成一个变量
random.choices(population, weights=None, *, cum_weights=None, k=1)          # 3.6版本新增。从population集群中随机抽取K个元素(可重复)weights是相对权重列表,cum_weights是累计权重,两个参数不能同时存在,k表示个数。
random.choices(["红球","黄球","篮球","黑球"], [50,30,15,5], k=1)
string模块
import string
string.ascii_letters                                 # 列出所有大小写字母
string.ascii_lowercase             # 列出所有小写字母
string.ascii_uppercase                                 # 列出所有大写字母
string.digits                                     # 列出所有数字
string.punctuation                                  # 列出所有特殊字符
string.printable                                   # 列出所有字符,数字,字母
string.hexdigits                                  # 列出所有16进制数
string.octdigits                                   # 列出所有8进制数
string.whitespace                                  # 列出所有空白符
os模块  与操作系统进行交互
import os
os.system('ls')
os.getcwd()                                      # 获取当前工作目录   
os.chmod("/local/upload/",7)                              # 给文件目录/添加权限 
os.chdir("../")                                    # 更改当前目录
os.curdir()                                      # 当前目录
os.pardir()                                     # 父目录
os.makedir("/usr/local/tomcat")                            # 递归创建目录,父目录不存在时自动创建
os.removedir("/usr/local/tomcat")                           # 递归删除空目录,包括父目录
os.mkdir("a")                                    # 创建文件夹
os.rmdir("a")                                    # 删除空文件夹
os.remove("a.txt")                                   # 删除指定文件
import shutil
shutil.rmtree(del_file_dir)#删除不为空的文件夹
#https://blog.csdn.net/Tri_C/article/details/99862201
os.listdir()                                        # 列出指定目录下的所有文件,不传的话是当前目录  .为当前路径
os.rename("a","b")                                   # 把a重命名成b
os.stat("a.py")                                    # 获取文件信息
print(os.sep)                                    # 当前操作系统的路径分隔符
print(os.linesep)                                  # 当前操作系统的换行符
print(os.pathsep)                                   # 当前系统的环境变量中每个路径的分隔符,linux是:,windows是;
print(os.environ)                                   # 当前系统的环境变量
print(os.name)                                    # 当前系统名称
os.walk("路径")                                    # 递归查询路径下的所有文件及文件夹,三个参数  path(当前目录),dirs(当前目录的所有文件夹,不包括文件),files(当前目录的所有文件,不包括文件夹)
os.system('操作系统命令') 或者 os.popen('操作系统命令')               # 前者只能将命令执行,获取不到结果,后者可以,res = os.popen('ipconfig').read()
print(os.path.abspath(__file__))                           # 获取绝对路径/也可以使相对路径变成绝对路径
print(os.path.relpath('c://')) #绝对路径转换成相对路径
print(os.path.getsize('a.txt'))                            # 取文件大小,单位是字节
print(os.path.split("/usr/hehe/hehe.txt"))                    # 分割路径和文件名
print(os.path.dirname("/usr/local"))                          # 获取父目录
print(os.path.basename("/usr/local"))                         # 获取最后一级,如果是文件显示文件名,如果是目录显示目录名
print(os.path.exists("/usr/local"))                          # 目录/文件是否存在
print(os.path.isabs("."))                               # 判断是否是绝对路径
print(os.path.isfile("/usr/local"))                          # 判断是否是一个文件
print(os.path.isdir("/usr/local"))                          # 是否是一个路径
print(os.path.join("/root",'hehe','a.sql'))                      # 拼接成一个路径,系统能自动识别linux("/")和windows("\")
print(os.path.getatime("len_os.py"))                         # 输出最近访问时间
print(os.path.getmtime("len_os.py"))                          # 输出最近访问时间
print(os.path.getctime("len_os.py"))                         # 输出文件创建日期
os.access("../test.html", os.F_OK)                          #os.F_OK参数判断path路径是否存在此文件,返回布尔值
os.access("../test.html", os.R_OK)                          #os.R_OK参数判断此文件是否可读,返回布尔值
os.access("../test.html", os.W_OK)                          #os.W_OK参数判断此文件是否可写,返回布尔值
os.access("../test.html", os.X_OK)                          #os.X_OK参数判断此文件是否可执行,返回布尔值
os.chown(path, uid, gid);                                #将指定的路径的所有者和组ID更改为数字uid和gid。                     
os.chroot(path)                                      #方法用于更改当前进程的根目录为指定的目录,使用该函数需要管理员权限,path为设置的根目录路径。
sys模块  与python解释器进行交互
import sys
sys.argv                                   # 命令行参数List,第一个元素是程序本身路径
sys.exit(n)                                   # 退出程序,正常退出时exit(0)
sys.version                                  # 获取Python解释程序的版本信息
sys.maxint                                   # 最大的Int值
sys.path                                   # 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform                                   # 返回操作系统平台名称
sys.stdout.write('please:')                              # 向屏幕输出一句话
val = sys.stdin.readline()[:-1]                            # 获取输入的值
time,datetime模块                                   时间有三种表示方式,一种是时间戳、一种是格式化时间、一种是时间元组
import time,datetime
print(time.timezone)                                 # 本地时间和标准时间相差的时间,单位是s
print(time.time())                                  # 返回当前时间戳
print(time.clock())                                  # 计算cpu处理执行的时间
print(time.sleep(1))                                 # 休眠,单位秒
print(time.gmtime())                                 # 把时间戳转换成时间元组,如果不传的话,默认取标准时区的时间戳
print(time.localtime())                               # 把时间戳转换成时间元组,如果不传的话,默认取当前时区的时间戳
print(time.mktime(time.localtime()))                         # 把时间元组转换成时间戳
print(time.strftime("%y%m%d %H%M%S"))                         # 将时间元组转换成格式化输出的字符串
print(time.strptime("20160204 191919","%Y%m%d %H%M%S"))                # 将格式化的时间转换成时间元组
print(time.struct_time)                                # 时间元组
print(time.asctime())                                 # 时间元转换成格式化时间
print(time.ctime())                                  # 时间戳转换成格式化时间
print(datetime.datetime.now())                            # 当然时间格式化输出
print(datetime.datetime.now()+datetime.timedelta(3))                 # 3天后的时间
print(datetime.datetime.now()+datetime.timedelta(-3))                # 3天前的时间
time.asctime( time.localtime(time.time()) )                     # 可读格式获取现在时间
import calendar
calendar.month(2021, 11)                               # 获取2021年11月的日历,先导入import calendar模块

str类型的日期转换为时间戳

tss1 = '2018-10-10 23:40:00'#字符型时间格式
timeArray = time.strptime(tss1, "%Y-%m-%d %H:%M:%S")#转成时间数组,所有时间数组都可以.出方法来调用所需要的字段
timeStamp = int(time.mktime(timeArray))#转成时间戳
修改str类型的日期格式
tss2 = "2013-10-10 23:40:00"
timeArray = time.strptime(tss2, "%Y-%m-%d %H:%M:%S")
otherStyleTime = time.strftime("%Y/%m/%d %H:%M:%S", timeArray)
时间戳转换为指定格式的日期  
#time
timeStamp = 1381419600
timeArray = time.localtime(timeStamp)
otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
#datetime
timeStamp = 1381419600
dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")
时间戳变成指定格式
#time
now = int(time.time()) #
timeArray = time.localtime(now)
otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
#datetime
now = datetime.datetime.now()
otherStyleTime = now.strftime("%Y--%m--%d %H:%M:%S") configparser模块  通常用作配置文件的增删改查
#生成conf文件
import configparser
conf = configparser.ConfigParser()
conf['mysql'] = {
'user': 'nihao',
'passwd': 123456,
'port': 3306
}
conf['redis'] = {}
conf['redis']['user'] = 'nihao'
conf['redis']['passwd'] = '123456'
conf['redis']['port'] = '6379'
with open('conf.txt', 'w') as configfile:
conf.write(configfile) #读取conf文件
import configparser
conf = configparser.ConfigParser()
conf.read('conf.txt')                        #读取conf文件
sec = conf.sections()                        #获取所有父节点值
opt = conf.options('mysql')                    #获取指定父节点下的所有子节点key
item = conf.items('redis')                     #获取指定父节点下的所有子节点的key,values
v_int = conf.getint('redis', 'passwd')             #获取指定节点的int数据
v_boolean = conf.getboolean('redis', 'tpye')          #获取指定节点的布尔值数据
v_float = conf.getfloat('redis', 'salary')           #获取指定节点的浮点数据
v_all = conf.get('redis', 'all')                   #获取指定节点的所有类型数据
#修改conf文件
import configparser
conf = configparser.ConfigParser()
conf.read('conf.txt')                      #读取conf文件
conf.add_section('db')                     #添加一个父类节点
conf.add_section('123')
conf.remove_section('123')                   #删除一个父节点
conf.set('db','db_username','rainbol')            #添加一个子节点并赋值
conf.set('db','db_password','123456')
conf.remove_option('mysql','user')              #删除一个子节点
conf.remove_option('mysql','passwd')
conf.set('mysql','username','root')
conf.set('mysql','password','654321')
conf.clear()                            #清空配置文件
conf.write(open('conf.txt','w',encoding='utf-8'))    #修改完成写入配置文件 itsdangerous模块  #一种的加密方式,程序解析加密和加密字符串,可以记录TTL和盐值
salt = 'saO)(&)H' #设置盐值
t = itsdangerous.TimedJSONWebSignatureSerializer(salt,expires_in=600)#指定参数,第一个是盐值,第二个是TTL加密过期时间
res = t.dumps({'username':'rainbol','password':'123456'})#设置加密的字典
print(res.decode())#取加密信息
session = 'eyJhbGciOiJIUzUxMiIsImlhdCI6MTU0MjAwMTcwNCwiZXhwIjoxNTQyMDAyMzA0fQ.eyJ1c2VybmFtZSI6IkNoZW56dWFueWkxMjMiLCJwYXNzd29yZCI6IkN6eTEyMzQhISJ9.
tOdU5gNQdIVONPoD5DLxsW4lRcDX_n3Bg82RR5C48uXT5JhW7Z_UYqpZYd16p9tlT7moXM-T0Son07_KGaBJvA'
res  = t.loads(session)#解析加密信息,如果加密信息不正确会报错
print(res) glod模块   #过滤目录
* ,?,[]  #匹配规则  * :匹配0个或多个字符;  ? :匹配单个字符;  [] :匹配指定范围内的字符
print(glob.glob('*.py'))#返回一个list,括号中填写过滤条件,*.py表示取结尾为py的文件
_list = glob.glob(BASEPATH+ os.sep + '*' + os.sep + '/*.html') #只获取第二层路径的html文件
_list = glob.glob('../*.html')  #获取上一层的html文件
 
platform模块    #判断操作系统,如os,linux,windows
import platform
import os
if platform.system().lower()== 'linux':
os.system('ls')
elif platform.system().lower()=='windows':
os.system('dir')
else:
pass
logger模板[1]  #日志是一种可以追踪某些软件运行时所发生事件的方法。python封装好了我们可以使用生成的日志报告框架
import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a,%d %b %Y %H:%M:%S',
filename='test.log',
filemode='w')
# level 级别 = logging.DEBUG 设置debug级别
# format 格式完全可以自定义
# datefmt 根据format中的asctime来设置指定自定义时间
# filename 设置文件输出格式,如果如果去掉filename和filemode将以屏幕输出格式
# filemode 文件模式
# 'w'记录到文件日志中,在w模式下,相当于打开文件的写操作,会覆盖之前的记录覆盖
# 'a'记录到文件日志中,在a模式下,相当于打开文件的追加操作 # format固定变量格式
'''
%(name)s 打印日志名称
%(levelno)s 打印日志级别的数值
%(levelname)s 打印对应filename参数中的设置的log路径
%(pathname)s 打印当前执行程序的路径
%(filename)s 打印文件名
%(module)s 打印日志输出函数的模块名
%(lineno)d 记录执行代码行号
%(funcName)s 由哪个function发出的log, 调用日志输出函数的函数名
%(created)f 当前时间,用UNIX标准的表示时间的浮点数表示; 日志事件发生的时间--时间戳,就是当时调用time.time()函数返回的值
%(asctime)s 对应datefmt参数中设置的时间
%(msecs)d 日志事件发生事件的毫秒部分
%(relativeCreated)d 日志记录创建时的时间(以毫秒为单位),与加载日志模块的时间(通常在应用程序启动时)相关
%(thread)d 打印线程id
%(threadName)s 打印线程名称
%(process)d 打印进程id
%(message)s 打印日志信息
''' # 日志级别 critical > error > warning > info > debug
logging.debug('this is debug message')
logging.info('this is info message')
logging.warning('this is warning message')
logging.error('this is error message')
logging.critical('this is critical message')
logger模板[2]    #既想输出屏幕还输出到文件用此格式
import logging
#创建四个对象
logger = logging.getLogger()#拿到一个logger对象
filer = logging.FileHandler('test.log')#创建一个把test.log路径放到FileHandler文件输出对象
stream = logging.StreamHandler()#创建一个屏幕输出对象
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')#创建一个把format输出到Formatter中的对象 filer.setFormatter(formatter)#fh文件添加输出格式
stream.setFormatter(formatter)#ch屏幕添加输出格式 #为logger添加文件输出格式和屏幕输出格式
logger.addHandler(filer)
logger.addHandler(stream) logger.setLevel(logging.DEBUG)#指定日志级别设置为DEBUG logger.debug('this is debug message')
logger.info('this is info message')
logger.warning('this is warning message')
logger.error('this is error message')
logger.critical('this is critical message')

logger扩展实例

'''
@File : rainbolog.py
@Copyright : Rainbol
@Date : 2019/9/25
@Desc :
'''
import logging
from logging import handlers
from conf.setting import logs_level class SingletonLog(object):
_instance = None def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = object.__new__(cls)
return cls._instance class RainLog(SingletonLog): def __new__(cls, *args, **kwargs):
return super().__new__(cls) def __init__(self, log_where, logs_level='debug', backCount=5, when='D', interval=1):
'''log_where日志绝对路径,logs_level日志等级'''
self.level = logs_level
self.logger = logging.getLogger('rainlog') # 拿到一个logger对象
self.stream = logging.StreamHandler() # 创建一个屏幕输出对象
fmt = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s') # 定义日志格式
self.bl = handlers.TimedRotatingFileHandler(filename=log_where, when=when, interval=interval,
backupCount=backCount,
encoding='utf-8') self.bl.setFormatter(fmt) # fh文件添加输出格式
self.stream.setFormatter(fmt) # ch屏幕添加输出格式
# 为logger添加文件输出格式和屏幕输出格式
self.logger.addHandler(self.stream)
self.logger.addHandler(self.bl)
self.logger.setLevel(getattr(logging, self.level.upper())) # 指定日志级别设置为DEBUG def write(self, connect):
'''写日志,connect:写入信息'''
if self.level.lower() == logs_level.lower():
res = getattr(self.logger, self.level.lower(), 'debug')
res(connect)
# 添加下面一句,在记录日志之后移除句柄
self.logger.removeHandler(self.stream)
self.logger.removeHandler(self.bl)
else:
pass if __name__ == '__main__':
# logger = RainLog('your_path')
# logger.write('your_message')
pass
hashlib模块

import hashlib
password1 = ''
res = password1.encode()#将密码转出二进制,password2 = b'123456'或者直接加b
m = hashlib.md5(res)#进行md5加密
print(m.hexdigest())#显示md5加密 加盐:二级加密,保证数据的安全,我们会在md5加密代码前加上一个特定的字符串,如123456helloworld,输入密码为123456,进过加盐对123456helloworld进行md5加密,当用户登录输入密码,代码自动在用户输入密码后加盐,转出md5与数据库匹配
      除了MD5还有sha.224,sha256更安全,由于md5算法是不可逆的,所以按照实际业务来实现算法
   双重加密  加密两次,我们使用os.urandom(n) #表示一个生成n个字节随机字符串,当然每次打印生成的结果肯定是不一样的
   uuid加密 import uuid res=uuid.uuid4() #根据机器号时间等信息生成的随机序列号 #e6684777-5166-455f-8c48-c6f5f3e79d2c
import os
from hashlib import md5
req = os.urandom(24)
res = md5(os.urandom(24)).hexdigest()
print(res)
#002747ea4bb0852767c9449307f8da93
importlib模块
#实现动态导入模块并执行
import importlib
mode = 'libtest.importlib_test' #mode为libtest文件下的importlib_test.py文件
fuc = 'run' #文件中的run函数名称
moc = importlib.import_module(mode) #将mode变量导入,该模块会拿到py文件对象
res = getattr(moc,fuc) #再通过getattr传入对象和函数名称
res()#最后执行模块方法
heapq模块
#从一个集合中查找最大最小的N个元素——Python heapq 堆数据结构
import heapq
num = [23,213,1,23,2,23,24,5,345,34.324,5,3,52]
max= heapq.nlargest(3,num)#显示列表中的最大前三个
min = heapq.nsmallest(3,num)#显示列表中的最小前三个# heapq.nlargest(n, iterable[, key])第三参数key的使用
portfolio = [
{'name': 'IBM', 'shares': 100, 'price': 91.1},
{'name': 'AAPL', 'shares': 50, 'price': 543.22},
{'name': 'FB', 'shares': 200, 'price': 21.09},
{'name': 'HPQ', 'shares': 35, 'price': 31.75},
{'name': 'YHOO', 'shares': 45, 'price': 16.35},
{'name': 'ACME', 'shares': 75, 'price': 115.65}
] print(heapq.nlargest(3,portfolio,lambda x:x['shares']))#从例子中可以看出x['shares']可以取关键字shares值的数据作为排列规则,并且再取整行数据
#>>[{'name': 'FB', 'shares': 200, 'price': 21.09}, {'name': 'IBM', 'shares': 100, 'price': 91.1}, {'name': 'ACME', 'shares': 75, 'price': 115.65}]
callable() #判断是否为函数
def hanshu():
pass
print(callable(hanshu))#true
print(callable('我不是函数'))#false
min()函数 判断最小

print(min('abc123'))
print(min([2,3,4,5,6,7,1]))
print(min({1:'',2:''}))
print(min((2,3,4,5,6,7,8,1)))
print(min((({4:'a',2:'b',1:'c'}))))#不管里面有多少层
print(min({'a':'','b':''})) #key参数
print(min({"username":"","password":""},{"username":"","password":""},key=lambda x:x["username"]))#多字典函数时指定函数区分 #default参数
print(min('', default='默认值'))#空字符串,空列表,空元祖,空字段,可设返回默认值

下面为第三方库

faker模块  不是打LoL的faker
# pip install faker
#github地址 https://github.com/joke2k/faker
#中文官方文档 https://faker.readthedocs.io/en/master/locales/zh_CN.html#
import faker
#该模块主要是用来做测试的假数据或者伪造数据
f2 = faker.Faker(locale='zh-CN')#指定中文,如果不填就是英文数据,也可以指定其他国外地区
#常用
print(f2.ssn())#身份证号
print(f2.phone_number())#手机号
print(f2.email())#邮箱
print(f2.address())#地址
print(f2.name())#姓名
print(f2.postcode())
print(f2.street_address())#街道地址
print(f2.street_name())#街道名
print(f2.street_suffix())#街、路
print(f2.street_address())#街道地址
print(f2.date())#随机日期
print(f2.ipv4())#随机IP4地址
print(f2.url())#随机URL地址
print(f2.phone_number())#随机生成手机号
print(f2.simple_profile())#随机档案信息
#hypothesis模块  高级测试库,造一些平常测试中难以发现的测试数据
#使用:pip install hypothesis
import unittest
from hypothesis import given, settings
import hypothesis.strategies as st def add(a, b):
"""实现加法运算"""
return a + b class AddTest(unittest.TestCase): @settings(max_examples=100) # 控制随机数的生成次数,
@given(a=st.integers(), b=st.integers()) # 装饰测试用例,调用strategies 模块下面的 integers() 方法生成随机的测试数
def test_case(self, a, b):
print("a->", a)
print("b->", b)
c1 = a + b # 实际结果数据
c2 = add(a, b) # 测试add函数的结果数据
self.assertEqual(c1, c2) @settings(max_examples=5)
@given(c=st.text(), d=st.dates(), e=st.data(), f=st.binary())
def test_case2(self, c, d, e, f):
print('c--->', c)
print('d--->', d)
print('e--->', e)
print('f--->', f) @settings(max_examples=5)
@given(g=st.booleans(), j=st.characters(), l=st.datetimes(), m=st.times())
def test_case2(self, g, j, l,m):
print('g--->', g)
print('j--->', j)
print('l--->', l)
print('m--->', m) if __name__ == '__main__':
unittest.main()
jsonpath模块  #方便取json的模块
# 安装 pip install jsonpath
import jsonpath
es = {
"mappings": {
"article": {
"properties": {
"type": "string", "analyzer": "english"
}
,
"post_date": {
"type": "date"
},
"title": {
"type": "string"
},
"publiser_id": {
"type": "long"
}
}
}
} result01 = jsonpath.jsonpath(es, 'mappings') # 参数1:传一个正确的json,参数2:传想要获取的key,返回一个传入的键的value并以列表形式返回
result02 = jsonpath.jsonpath(es, 'article') # 返回False,如果超过第一层就要使用$..来查找,如下↓
result03 = jsonpath.jsonpath(es, '$..analyzer') # 返回['english']
print(result03)
在linux常见使用curl,该模块可以在window使用类似于curl的功能
pip install httpie
之后在终端输入http看看有没有安装成功 http -v www.baidu.com #请求返回详细信息
http www.baidu.com > a.txt #重定向到一个文件
http -h #只显示header
http -b #只显示body
http -d #下载保存页面 和重定向一样
http -a your_username:your_password #--auth-type=digest
http 网站 User-Agent:用户代理 'Cookie:cookie' Referer:来源 #用来修改请求头
http --proxy=http:http://192.168.1.254:8080 xxx.com #使用代理来请求
其他 https://www.jianshu.com/p/65b1d65873f5
# pip install emoji python操作emoji
from emoji import emojize
print(emojize(":thumbs_up:"))#默认::中间为分割符,里面是存储表情名
print(emojize("Python is fun :thumbs_up:"))
print(emojize("Python is fun @!thumbs_up!@", delimiters=("@!", "!@")))#可以修改默认分隔符,自定义分割符
print(emojize("hello:Christmas_tree::Christmas_tree:world!"))
from emoji import emoji_lis
emj = emojize("Python is fun :thumbs_up:")
print(emoji_lis(emj)) #寻找emoji返回列表形式 [{'location': 17, 'emoji': '

python内置模块笔记(持续更新)的更多相关文章

  1. BLE资料应用笔记 -- 持续更新

    BLE资料应用笔记 -- 持续更新 BLE 应用笔记 小书匠 简而言之,蓝牙无处不在,易于使用,低耗能和低使用成本.'让我们'更深入地探索这些方面吧. 蓝牙无处不在-,您可以在几乎每一台电话.笔记本电 ...

  2. LeetCode 题目的 Python 实现(持续更新中)

    Python-LeetCode 是一个使用 Python 语言解决 LeetCode 问题的代码库,库有以下几个方面需要注意: 所有题目都是 AC 的: 按照题目顺序,每 50 个放在一个目录下,方便 ...

  3. LeetCode python实现题解(持续更新)

    目录 LeetCode Python实现算法简介 0001 两数之和 0002 两数相加 0003 无重复字符的最长子串 0004 寻找两个有序数组的中位数 0005 最长回文子串 0006 Z字型变 ...

  4. [读书]10g/11g编程艺术深入体现结构学习笔记(持续更新...)

    持续更新...) 第8章 1.在过程性循环中提交更新容易产生ora-01555:snapshot too old错误.P257 (这种情况我觉得应该是在高并发的情况下才会产生) 假设的一个场景是系统一 ...

  5. Python 学习笔记 - 不断更新!

    Python 学习笔记 太久不写python,已经忘记以前学习的时候遇到了那些坑坑洼洼的地方了,开个帖子来记录一下,以供日后查阅. 摘要:一些报错:为啥Python没有自增 ++ 和自减 --: 0x ...

  6. react-native-storage 使用笔记 持续更新

    React-native-storage是在AsyncStorage之上封装的一个缓存操作插件库,刚开始接触这个也遇到了一些问题,在这里简单记录总结一下,碰到了就记下来,持续更新吧 1.安卓下stor ...

  7. 数据分析之Pandas和Numpy学习笔记(持续更新)<1>

    pandas and numpy notebook        最近工作交接,整理电脑资料时看到了之前的基于Jupyter学习数据分析相关模块学习笔记.想着拿出来分享一下,可是Jupyter导出来h ...

  8. Python学习笔记(day23更新)

    第一章 计算机基础 1.1 硬件 计算机基本的硬件由:CPU / 内存 / 主板 / 硬盘 / 网卡 / 显卡 等组成,只有硬件但硬件之间无法进行交流和通信. 1.2 操作系统 作用:操作系统用于协同 ...

  9. BLE资料应用笔记 -- 持续更新(转载)

    简而言之,蓝牙无处不在,易于使用,低耗能和低使用成本.’让我们’更深入地探索这些方面吧. 蓝牙无处不在—,您可以在几乎每一台电话.笔记本电脑 .台式电脑和平板电脑中找到蓝牙.因此,您可以便利地连接键盘 ...

随机推荐

  1. RubyGem镜像/ruby国内镜像

    RubyGem 网上推荐的淘宝的镜像已经无法访问 清华镜像 # 添加 TUNA 源并移除默认源 gem sources --add https://mirrors.tuna.tsinghua.edu. ...

  2. Linux学习、Mongodb部署 踩到的坑学习

    一.安装Centos 7虚拟机系统 1.系统安装 下载阿里云的镜像,下载后安装,默认全程图形界面:虚拟机使用Win10自带的Hyper:碰到的坑记录下 1.在Hyper加载镜像启动的时候,提示“虚拟机 ...

  3. LInux基础(04)项目设计一(理解链表管理协议的代码架构)

    要设计好一个项目必须要有一个健全的代码框架 一个结构体内有数据域和处理数据的函数指针, 先实现管理链表的函数 增加节点  删除节点  清空链表  遍历节点对每个节点进行操作 再实现协议的注册 把对象s ...

  4. html 打开新页面

    设置 target 页面 这样会点击一次就产生一个页面 页面 填任意名称,多个点击只产生于一个页面

  5. Linux 服务器管理建议

    Linux 服务器管理建议 一.学习Linux 的注意事项 Linux 严格区分大小写 Linux 一切皆文件 Linux 不靠扩展名区分文件类型 靠权限位标识来确定的 特殊文件要求写扩展名(给管理员 ...

  6. CLRS10.2-8练习 - 单指针值实现双向链表

    要求: Explain how to implement doubly linked lists using only one pointer value x.np peritem instead o ...

  7. RabbitMQ之消息模式(下)

    目的: RabbitMQ之消息模式(上):https://www.cnblogs.com/huangting/p/11994539.html 消费端限流 消息的ACK与重回队列 TTL消息 死信队列 ...

  8. python_操作linux上的mysql

    在编写初期,遇见一个问题,发现怎么连接不上mysql,一直报错1045: 最后发现,只要下面的,连接写正确,不会出现这个问题, 只要你保证你的user.pwd是正确的, import pymysqld ...

  9. C# 截取字符串方法总结

    第一种:根据单个分隔字符用split截取 string st="GT123_1"; string[] sArray=st.split("_"); //即可得到s ...

  10. activiti工作流(传智播客)

    1:工作流的概念   说明: 1) 假设:这两张图就是华谊兄弟的请假流程图  2) 图的组成部分:  A. 人物:范冰冰 冯小刚 王中军  B. 事件(动作):请假.批准.不批准     工作流(Wo ...