python基础
文章平均质量分 54
python基础语法
FatPuffer
这个作者很懒,什么都没留下…
展开
-
协程gevent记录错误日志堆栈信息
原因实际工作中遇到的问题,使用gevent协程来提高性能,但发现携程中的异常堆栈信息抓取不到第一次尝试try: result = {} gevent.joinall([ gevent.spawn(self.desktop_statistics_info, result), gevent.spawn(self.user_statistics_info, result), gevent.spawn(self.client_statistics_原创 2022-01-07 12:39:22 · 2892 阅读 · 1 评论 -
python3将秒转换为可以xx小时xx分xx秒
def humanize_seconds(secs: int, lang='zh'): time_total = '' result = datetime.timedelta(seconds=secs) days = result.days if days: # 如果大于一天,则以','分割,取时间部分:时、分、秒 time_list = str(result).split(",")[-1].strip().split(":") els原创 2021-09-01 14:17:28 · 556 阅读 · 0 评论 -
python3将图片转换为base64编码存入数据库,再将数据传给前端模板展示
1.数据表如下重点注意content字段类型2.python代码将图片写入数据库import base64import pymysqlwith open('./timg.jpg', 'rb') as f: data = base64.b64encode(f.read())conn = pymysql.connect(host="localhost", user="admin", passwd="password", database="test", charset="ut原创 2021-07-20 23:07:49 · 3247 阅读 · 1 评论 -
Dynaconf
1.安装pip install dynaconf2.进入项目,初始化配置文件cd xxxxdynaconf init -f toml # 推荐使用toml格式配置文件,django推荐yaml格式(toml|yaml|yml|json|ini|py|env)初始配置文件如下:. ├── config.py # 一个新的dynaconf设置对象实例被初始化和配置├── .secrets.toml # 比较敏感的配置信息例如:密码、token等└── setting原创 2021-07-07 15:42:12 · 3262 阅读 · 0 评论 -
判断一个时间是否在一个时间范围内
一、时间格式如下start_time:"14:00"end_time:"23:00"二、目的:周期性判断,然后进行相关业务处理三、下面是两种实现方式(满足跨天时间)1、通过转换日期时间格式进行判断import datetimedef judge_time_range(start_time, end_time): now_data = datetime.datetime.now().date() start_datetime = datetime.datetime.str原创 2021-06-11 11:30:08 · 4498 阅读 · 1 评论 -
python装饰器
1. 不带参数的装饰器使用场景:(一是:记录函数,二是:给函数做一些特殊标记) def dec(func): def inner(): return func() return inner @dec def f1(): ... return ...例如:将函数调用记录下来recording = list()def dec(...原创 2020-12-16 20:30:33 · 528 阅读 · 1 评论 -
以字符串中标点符号作为字符串分隔符,将分割的各部分字符串中的单次进行反转,标点符号位置不变
方式一:def str_reverse1(str_info): flag = None if "?" in str_info: resp1, resp2 = str_info.split("?") flag = "?" elif "," in str_info: resp1, resp2 = str_info.split(",") flag = "," elif "." in str_info:原创 2020-11-17 12:08:02 · 462 阅读 · 0 评论 -
判断一个列表中的元素是否在字符串中
def func(iter, str_info): str_info = set(str_info.split(' ')) iter = set(iter) if iter & str_info: return True else: return Falseexample_str = "Where are you going?"example_list = ["are", "what", "I"]example_list2 = ["your", "what", "I"]f原创 2020-11-16 21:41:29 · 1650 阅读 · 0 评论 -
根据IP段或掩码生成所有可能存在的IP迭代对象
import socketimport structfrom IPy import IPclass IpAnalysis(object): ''' @desc : 初始化函数 @参数ipString : 初始化传入IP eg: 192.168.0.0/24 192.168.0.1-192.168.0.123 192.168.0.100 ''' def __init__原创 2020-11-13 16:11:59 · 473 阅读 · 0 评论 -
itertools模块排列组合
import itertoolscommon_username = ["admin", "root", "user"]common_password = ["12345678", "abc123456", "user123"]data = itertools.product(common_username, common_password)for info in data: print(info)('admin', '12345678')('admin', 'abc123456'原创 2020-10-29 18:09:49 · 123 阅读 · 0 评论 -
python闭包
1.闭包定义: 在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包。 一般情况下,如果一个函数调用结束,函数的内部所有变量都销毁,内存...原创 2020-09-22 11:44:49 · 495 阅读 · 0 评论 -
python离线安装依赖包
1. 单个依赖包离线下载安装首先新建一个目录package_whl来存放下载的依赖包文件.whl执行以下命令下载依赖包下载单个依赖包(在有外部网络的环境下进行)pip3 download -d /home/package_whl/ requests -i https://pypi.douban.com/simple执行以下命令进行安装单个依赖包安装(将刚刚下载好的几个.whl文件拷贝到目标服务器,该服务器可以是内部局域网,不能访问外部网络)pip3 install req原创 2020-09-15 17:42:55 · 5438 阅读 · 0 评论 -
type元类
使用type动态创建类 type可以接受一个类的描述作为参数,然后返回一个类(根据传入参数的不同,同一个函数拥有两种完全不同的用法是一件很傻的事,但这再python中是为了保持向后兼容性) type可以这样工作:type(类名, 由父类名称组成的元组(针对继承的情况,可以为空), 包含属性的字原创 2020-05-09 14:48:42 · 205 阅读 · 0 评论 -
python播放MP3文件
方式一:使用playsound模块安装pip install playsound示例from playsound import playsoundplaysound("auido.mp3")方式二:使用pygame模块安装import pygame示例import pygameimport time# 音频初始化pygame.mixer.in...原创 2020-04-27 17:30:03 · 739 阅读 · 0 评论 -
IO编程
1、IO:input(输入) output(输出)(1)在内存中存在数据交换的操作都可以认为是输入输出比如:内存和磁盘的交互 读写操作内存和网络交互 recv send(2)IO 密集型程序程序执行中大量的IO操作,而较少的CPU运算消耗cup较少,运行时间长(3)CPU 密集型程序(计算密集型)程序中大量的操作都需要CPU计算,IO操作较少消耗CPU较大...原创 2019-03-29 18:04:12 · 148 阅读 · 0 评论 -
图片验证码
后端通过前端传过来的UUID来确定唯一的验证码验证码资源包 ————点击下载from captcha.captcha import captchadef get_image_code(image_code_id): """ 获取图片验证码 : params image_codes_id: 图片验证码编号 :return: 正常:验证码图片 异常:返回j...原创 2019-04-28 15:44:36 · 203 阅读 · 0 评论 -
验证码生成
提示:windows查看系统字体位置:win + r:打开命令窗口输入:fonts即可找到 from PIL import Image, ImageDraw, ImageFont, ImageFilter import random import math, string # 字体的位置,不同版本的系统会有不同 font_...原创 2019-02-12 11:58:33 · 129 阅读 · 0 评论 -
istdangerous加密模块
istdangerous加密模块可以进行加解密,同时可设定过期时间。加密:from itsdangerous import TimedJSONWebSignatureSerializer as Serializerserializer = Serializer('密钥字符串','过期时间,单位s')info = {'id': 1} # 要加密信息res = serializer.dum...原创 2019-02-06 15:49:08 · 140 阅读 · 0 评论 -
yield生成器函数实现多任务处理
普通函数import time def test1(): for i in range(5): print(1) time.sleep(1) def test2(): for i in range(5): print(2) time.sleep(2) def main(): ...原创 2019-02-15 10:46:20 · 205 阅读 · 0 评论 -
python中property属性的应用
1. 经典类经典类在使用装饰器方式时,只支持property属性值的读取class Pager: def __init__(self, current_page: int, page_num: int): self.current_page = current_page self.page_num = page_num @property...原创 2020-04-17 00:05:11 · 150 阅读 · 0 评论 -
python定时任务
方式一:Python 标准库 threading 中有个 Timer 类。它会新启动一个线程来执行定时任务,所以它是非阻塞函式。threading.Timerfrom datetime import datetimefrom threading import Timer'''每隔 10 秒打印当前时间。'''def timedTask(): ''' 第一个参数...转载 2020-03-26 16:21:13 · 559 阅读 · 0 评论 -
python监控文件目录
import sysimport osfrom pyinotify import WatchManager, Notifier, ProcessEvent, IN_DELETE, IN_CREATE, IN_MODIFYclass EventHandler(ProcessEvent): def process_IN_CREATE(self, event): prin...原创 2019-12-04 14:21:16 · 664 阅读 · 0 评论 -
python容器collections
示例一:统计列表中元素个数from collections import Counterlst = ['a', 'b', 'c', 'a', 'd', 'e', 'c']num = Counter(s for s in lst)print(num)Counter({ 'a': 2, 'c': 2, 'b': 1, 'd': 1, 'e': 1 }...原创 2019-11-05 15:25:24 · 108 阅读 · 0 评论 -
zip
定义:从参数中的多个迭代器取元素组合成一个新的迭代器返回:一个zip对象,其内部元素为元组;可以转化成列表或元组语法:zip(iter1 [,iter2,iter3,.....])参数说明:传入参数:元组、列表、字典等迭代器示例:>>> numbers = [10086, 10000, 10010, 95588]>>> names = ['中国...原创 2019-10-30 16:13:06 · 223 阅读 · 0 评论 -
sorted
作用:用于对集合进行排序语法:sorted(iterable[, cmp[, key[, reverse]]])参数说明:iterable – 可迭代对象。cmp – 比较的函数(python3中已被彻底移除),这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。key – 主要是用来进行比较的元素(python2.4开...原创 2019-10-30 15:54:05 · 314 阅读 · 0 评论 -
reduce
功能: 对一个序列进行压缩运算,得到一个值。但是reduce在python2的时候是内置函数,到了python3移到了functools模块,所以使用之前需要 from functools import reduce调用: reduce(function,iterable),其中function必须传入两个参数,iterable可以是列表或者元组例子:from functools impor...原创 2019-10-30 15:18:17 · 553 阅读 · 0 评论 -
filter
功能: filter的功能是过滤(裁剪)掉序列中不符合函数条件的元素,当序列中要删减的元素可以用某些函数描述时,就应该想起filter函数。调用: filter(function,sequence),function可以是匿名函数或者自定义函数,它会对后面的sequence序列的每个元素判定是否符合函数条件,返回TRUE或者FALSE,从而只留下TRUE的元素;sequence可以是列表、元组或...原创 2019-10-30 14:51:44 · 102 阅读 · 0 评论 -
map
说明:python中的map()函数是一个内置的高阶函数,一般用法是map(function, iterable)。需要传入一个函数,这个函数可以是内置的,也可以是自己定义,也可以是匿名函数。第二个参数是一个可迭代对象,如列表,字符串等等。返回的是一个map对象,注意不是列表不能直接输出,可以通过for循环或者list()来显示。(python2返回的是列表)(1)传入自定义函数def squ...原创 2019-10-30 14:40:37 · 149 阅读 · 0 评论 -
深拷贝和浅拷贝
浅拷贝:只复制一层变量绑定对象,不会复制深层变量绑定的对象>>> a = [1, 2, 3] >>> y = [4, 5, a] >>> >>> a [1, 2, 3] >>> y ...原创 2019-10-30 14:20:10 · 170 阅读 · 0 评论 -
lambda
匿名函数lambda 参数: 返回值表达式>>> s = lambda x, y: x * y>>> s(3, 4)12>>>lambda 演变过程标准写法def mul(x, y): return x * ys = mul(3, 4)简化def mul(x, y): return x * y变形,将...原创 2019-10-30 11:42:50 · 338 阅读 · 0 评论 -
python 处理超时请求
处理超时请求在某些情况下,我们调用第三方接口时,响应时间无法估计,但我们还要考虑到下面代码的执行,此时就可以使用该方法,指定超时时间,如果超时未处理成功,则直接跳过他,继续向下执行。当然也可以使用异步任务进行处理。import timeimport eventleteventlet.monkey_patch()try: with eventlet.Timeout(2):...原创 2019-10-17 17:59:40 · 5625 阅读 · 0 评论 -
python3可解密的简单加密方法
import base64import osfrom cryptography.fernet import Fernetclass AES(): def __init__(self, secret_key): self.key = secret_key def encrypt_p(self, password): f = Fernet(...原创 2019-08-24 12:38:14 · 1199 阅读 · 0 评论 -
python随机密码生成小demo
python随机8密码import randomdef gen_pass(): # 去除0、O、o、z、Z、l # symbols = '!@#$%&*+=、,~-_=^' # 还可以添加特殊字符,加强密码 payloads = ''.join([chr(x)+chr(x+32) for x in range(65,91) if x not in [79, 90, 10...原创 2019-05-23 09:47:56 · 2055 阅读 · 0 评论 -
Python处理时间 time && datetime 模块
Thu Nov 03 16:40:00 2016import timeprint time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())2019-05-06 08:36:04from datetime import datetimeprint datetime.now().strftime('%Y-%m-%d %H:%M:%S')...原创 2019-05-06 08:55:43 · 164 阅读 · 0 评论 -
位运算、左移、右移
(1)按位与 &相同位的数字只要有0则位0(2)按位或 |相同位的数字只要有1就为1(3)按位异或相同位的数字数值不同则为1,相同则为0(4)按位异或应用场景(1)判断两个字符串是否相同第一步:循环两组字符串,利用ord()函数获取其每个字符对应编码值第二步:利用按位异或相同位数的数字一样则为0的属性来进行对比将比较的值交给一个变量result来保存...原创 2019-03-28 16:57:21 · 7843 阅读 · 0 评论 -
windows下安装依赖包失败,解决方法,豆瓣源加速镜像
windows下安装依赖包失败,可以去下面网址寻找对应版本.whl安装包https://www.lfd.uci.edu/~gohlke/pythonlibs/pip install xxxxxxxxxxxxxx.whl使用豆瓣源镜像安装(提速)pip install -i http://pypi.douban.com/simple...原创 2019-03-29 18:09:42 · 400 阅读 · 0 评论 -
Python单例模式
单例类: 让类创建的对象,在系统中只有唯一的一个实例实现步骤:1.定义一个类属性__instance,初始值是None,用于记录单例对象的引用2.重写__new__方法如果类属性__instance is None,调用父类方法分配空间,并在类属性中记录结果。返回类属性中记录的对象引用代码示例:class MusicPlayer(object): pass# 创建多个对象...原创 2019-03-19 10:22:05 · 247 阅读 · 0 评论 -
__new__方法
设计模式: 为了使代码可重用,让代码更容易让人理解,保证代码可靠性。单例模式: 让类创建的对象,在系统中只有唯一的一个示例,每一次执行类名()返回的对象,内存地址是相同的。__new__方法使用类名()创建对象时,Pytho...原创 2019-03-19 09:21:31 · 1274 阅读 · 1 评论 -
Python数据结构常用方法以及内置模块方法
字符串字符串中反斜杠字符表转义格式意义\’单引号(’)\"双引号(")\\反斜杠(\ )\n换行\r返回光标至行首\f换页\t水平制表符\v重直制表符\b倒退\0空字符,字符值为零\0oooo为两位八进制表示的字符\xXXXX为两位十六进制表示的字符\uXXXXUnicod...原创 2019-03-07 15:51:48 · 530 阅读 · 0 评论