
Python
Lex_lht
????
展开
-
python根据主机名获取主机的IP地址
比如我的hosts名字[root@controller ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain699.0.85.37 controller99.0.85.38 compute199.0.85原创 2021-03-12 16:17:13 · 464 阅读 · 0 评论 -
实现一个函数出错重试的装饰器
装饰器import functoolsdef retry_if_error(f): @functools.wraps(f) def inner(*args, **kwargs): remain_times = 3 while remain_times > 0: try: return f(*args, **kwargs) except Exception原创 2021-02-24 17:00:47 · 248 阅读 · 0 评论 -
利用python实现事件回调
一、简介在代码开发的过程中,为了降低各模块之间的耦合度,除了可以采用rpc的方式外,也可以采用事件订阅的方式进行。昨天在和小伙伴讨论这个模块的作用时,我突然想到这个事件回调可以用在智能家居中。。。二、实现主要利用了python中collections的defaultdict模块为了方便区分callback,因此实现一个函数来获取该callback的IDdef get_callback_id(callback): """return a unique identifier for the原创 2021-02-07 15:06:50 · 1130 阅读 · 4 评论 -
with的一种用法(利用with清理资源与回退)
需求场景在执行完对资源的操作后再执行一些动作,若此动作执行失败,需要对之前对资源的操作进行回退。示例在执行完do_something_to_db 函数后,需要执行after_do_db 函数,但是当after_do_db 函数执行错误,需要对do_something_to_db 函数之前所做的操作进行清理、回退这时使用with语句可以比较方便的进行回退操作,相对于不加with的语句显得优雅许多不用每次调用after_do_db时都加try...except...回退清理代码代码class Bas原创 2020-12-29 18:01:21 · 323 阅读 · 2 评论 -
Postman的Binary方式传送数据,requests实现
问题来源及背景最近在学习ES,在批量上传数据的时候卡住了,requests上传文件的时候一般用的是url = 'http://127.0.0.1:9200/_bulk'files = { "field" : open(filename, mode='rb') }requests.post(url, data=files, headers={'Content-Type':'binary'})但是上传的过程中ES一直报错,信息如下{"error":{"root_cau原创 2020-10-08 16:17:44 · 9727 阅读 · 1 评论 -
记两种使用property的方法
使用property可以限定类属性的读写使用property()函数函数声明:property(fget=None, fset=None, fdel=None, doc=None)优点:按照一般的写set和get的思路,不用加装饰器,只需在get和set函数后加上property函数即可示例:class Student(object): def __init__(self, name): self._name = name self._sex = Non原创 2020-08-10 14:01:20 · 1211 阅读 · 0 评论 -
Python偏函数(partial)的一些应用
在看Flask源码时发现的偏函数,现整理一下一些可能的应用例子示例1from functools import partialdef lookup_req_object(name): top = instance_stack.pop() return getattr(top, name, None)class Person: def __init__(self, name, age): self.name = name self.原创 2020-07-29 15:53:02 · 351 阅读 · 1 评论 -
将IP地址转换成整型--python实现
def int2ip(num): s = [] for i in range(4): s.append(str(num %256)) num //= 256 return '.'.join(s[::-1])def ip2int(ip): res = 0 for j, i in enumerate(ip.split('.')[::-1]): res += 256**j*int(i) return res"""原创 2020-06-24 14:25:04 · 875 阅读 · 0 评论 -
Python装饰器应用---统计函数运行时间
from functools import wrapsimport time# 装饰器函数def fun_run_time(func): @wraps(func) def inner(*args, **kwargs): s_time = time.time() ret = func(*args, **kwargs) e_time = time.time() print("{} cost {} s".format(func原创 2020-06-16 19:07:09 · 745 阅读 · 0 评论 -
FlaskMVC模式开发(应用拆分,模型拆分)
Flask MVC模式开发(应用拆分,模型拆分)随着Flask项目开发的进行,你会发现把模型定义和视图函数写在一个文件里有多乱,一方面找具体某个函数时你的鼠标可能需要在几百行,甚至上千行的代码中溜来溜去,很浪费时间有没有啊。所以需要进行拆分,但这时又非常容易出现循环导包的情况,所以经过我多方寻找与研究终于找到了解决办法。祭上我的GitHub链接https://github.com/Prolht/FUE/tree/master/backend...原创 2020-06-09 15:46:27 · 541 阅读 · 0 评论 -
Flask绑定多个数据库
下面主要讲如何在Flask中绑定多个数据库使用场景当你开发一个系统时,需要有多个数据库,但这个数据库已经有了,建新表还得把数据导来导去得很麻烦,这时候就用到了多个数据库得绑定了方法由于数据库密码等信息为敏感信息,最好做脱敏处理# config.pySQLALCHEMY_DATABASE_URI = 'mysql://root:123456@localhost:3306/teacher' # 默认数据库(主数据库)# 需要绑定的多个数据库SQLALCHEMY_BINDS = { '原创 2020-06-09 15:28:55 · 3669 阅读 · 2 评论 -
10进制转62进制
def __10to62(num): """ 10进制转62进制 """ base_scale = 62 chars = [ '3', 'a', '7', 'n', '2', 'b', 'H', 'm', 'E', '4', 's', 'M', 'f', 'Z', 'I', 'Y', 'K', 'x', 'q', 'U', 'o', 'l', 'L', 'D', '5', 'd', 'Q', 'h', 'i', 'y'.原创 2020-06-09 14:21:02 · 536 阅读 · 0 评论 -
Python/C API Python 调用C模块
见链接:https://docs.pythontab.com/interpy/c_extensions/python_c_api/转载 2020-05-25 20:33:04 · 211 阅读 · 0 评论 -
Python for 循环的 else从句
啥?for循环还有一个else从句。应用场景:有个常见的构造是跑一个循环,并查找一个元素。如果这个元素被找到了,我们使用break来中断这个循环。有两个场景会让循环停下来。 - 第一个是当一个元素被找到,break被触发。 - 第二个场景是循环结束。现在我们也许想知道其中哪一个,才是导致循环完成的原因。一个方法是先设置一个标记,然后在循环结束时打上标记。另一个是使用else从句。瞅瞅咋用吧!for n in range(2, 10): for x in range(2, n):转载 2020-05-25 20:22:34 · 192 阅读 · 0 评论 -
Python列表推导式if else及一些应用
两种形式的列表推导式1. 只有if…版模板:[item for item in data if condition]示例:# 剔除data中的奇数data = [1, 2, 3, 4, 5, 6, 7, 8, 9]test = [item for item in data if item % 2 == 0]print(test)# 结果[2, 4, 6, 8]此处if主要起条件判断作用,data数据中只有满足if条件的才会被留下,最后统一生成为一个数据列表2. if…else… 版原创 2020-05-25 19:50:53 · 6741 阅读 · 0 评论 -
Python 内置方法的时间复杂度
转载自:http://www.orangecube.NET/Python-time-complexity本文中,’n’代表容器中元素的数量,’k’代表参数的值,或者参数的数量。列表(list)以完全随机的列表考虑平均情况。列表是以数组(Array)实现的。最大的开销发生在超过当前分配大小的增长,这种情况下所有元素都需要移动;或者是在起始位置附近插入或者删除元素,这种情况下所有在该位置后面的元素都需要移动。如果你需要在一个队列的两端进行增删的操作,应当使用collections.deque(双向队.翻译 2020-05-13 15:07:51 · 490 阅读 · 0 评论 -
Python Shebang
Tip大部分.py文件不必以#!作为文件的开始. 根据PEP-394, 程序的main文件应该以#!/usr/bin/python2或者#!/usr/bin/python3开始.注: 在计算机科学中,Shebang(也称为Hashbang)是一个由井号和叹号构成的字符串行(#!), 其出现在文本文件的第一行的前两个字符. 在文件中存在Shebang的情况...转载 2020-03-22 20:08:48 · 776 阅读 · 0 评论 -
python int函数
https://www.runoob.com/python/python-func-int.html转载 2020-03-18 16:18:28 · 554 阅读 · 1 评论 -
华为研发工程师编程题--汽水瓶问题
题目 :有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?...原创 2020-03-18 15:39:25 · 494 阅读 · 0 评论 -
vscode 通过code Runner 运行python时乱码
解决办法:再setting.json中添加一行"code-runner.runInTerminal": true,即可,如图原创 2020-03-02 13:37:46 · 426 阅读 · 0 评论 -
判断非空字符串是否由子串首尾拼接
如输入abcabc,则返回abc,若输入abcbc,返回false.我的思路是:只要是由子字符串拼接的,那么子字符串的长度肯定是原来字符串长度的一个因子,所有可以先求出因子,再根据因子的长度进行分割,即可得出结果代码如下def findFactor(n): buff = [] for i in range(1,n): if n%i == 0: ...原创 2018-08-09 21:27:18 · 695 阅读 · 0 评论 -
Python 使用Threading创建多线程
三种方法创建多线程创建 Thread 的实例,传给它一个函数。 创建 Thread 的实例,传给它一个可调用的类实例。 派生 Thread 的子类,并创建子类的实例。1、创建 Thread 的实例,传给它一个函数上代码import threadingfrom time import sleep,ctimeloops = [4,2]def loop(nloop,nsec...原创 2018-08-20 09:55:03 · 2159 阅读 · 0 评论 -
windows下python自带的pip安装速度过慢解决方案
自带下载地址为国外源下载速度时常在20KB以内切换为国内源直接满速!国内源:新版ubuntu要求使用https源,要注意。清华:https://pypi.tuna.tsinghua.edu.cn/simple阿里云:http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simp...转载 2018-08-21 20:54:48 · 12277 阅读 · 3 评论 -
Python 中小谈global 全局变量
全局变量标志:global工作中碰见了global全局变量,发现自己不太明白,在这记下来。。。a = 1def fun1(): a = 2 print("In fun1 a is:{}".format(a))def fun2(): global a a = 2 print("In fun2 a is:{}".format(a))if __name__ == '__m...原创 2019-03-06 16:08:30 · 2127 阅读 · 0 评论 -
一些常用的正则表达式
偶然间看到一些常用的正则表达式,记在此处 phone: /^1([38]\d|4[57]|5[0-35-9]|7[06-8]|8[89])\d{8}$/, tel:/(^1([38]\d|4[57]|5[0-35-9]|7[06-8]|8[89])\d{8}$)|(^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\...原创 2018-05-25 21:50:28 · 402 阅读 · 0 评论 -
Python __call__总结
Python中对象按能否被调用可分为可调用对象与不可调用的对象(这不废话吗)举一个栗子class A(object): def __init__(self): passa = A()print('A能被调用吗?',callable(A))print('a能被调用吗?',callable(a))#结果为:#A能被调用吗? True#a能被调用吗? Fal...原创 2018-08-09 16:07:02 · 942 阅读 · 2 评论 -
Python 内置函数之open
open的作用一句话:open用来打开文件open的用法open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)其中:file:文件的路径名mode:open的模式 字母作用可读内容增加若不存在'r'只读模式(默认)True无报错'rb'以二进制格...原创 2018-07-12 15:08:51 · 1363 阅读 · 0 评论 -
Django验证用户登陆(同时适用于用户名和密码登陆)
#settings.pyAUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend']Django默认的验证方法(不需要注明),这种方法一般只适用于用户名和密码登陆如果自己想要使用户可以以用户名、密码组合登陆也可以用邮箱、密码登陆则需要自定义用户的验证函数#views.pyfrom django.db.models...原创 2018-06-06 13:00:47 · 4183 阅读 · 0 评论 -
Django的AbstractUser
Django中提供了一个AbstractUser类,我们可以用来自由的定制我们需要的model首先导入AbstractUserfrom django.contrib.auth.models import AbstractUser然后往其中添加gender和memo列,即可在Django的基础上添加我们所需要的信息。class UserProfile(AbstractUser): ''' ...原创 2018-06-06 12:30:04 · 6928 阅读 · 0 评论 -
Django中DateField与DateTimeField的特殊参数auto_add_now和auto_now
auto_add_now和auto_now这两个“小妖精”可磨坏我了今天就来搞搞你━┳━ ━┳━auto_now默认=False:当对象被存储时自动将对象的时间更新为当前时间,可以用来比如说博客的最近更新中。当执行Model.save()操作时自动更新,但当通过其他的途径比如QuerySet.update()更新其他的内容时,它不会自动更新 注意:不能修改它的默认产生的值auto_a...原创 2018-06-06 11:04:38 · 8235 阅读 · 1 评论 -
Django之models.py
模型时写一个数据库驱动的web的第一步,也就是数据库结构设计和附加的其它元数据也就是说你的models.py决定了你数据库的长相。定义的方法为:from django.db import models#用户信息表class UserInfo(models.Model): name = models.CharField(max_length=255,verbose_name='姓名')...原创 2018-06-06 10:26:56 · 2583 阅读 · 0 评论 -
不使用新变量,交换两个变量的值
基于加减法a=a+bb=a-ba=a-b基于异或运算a=a^bb=a^ba=a^b原创 2018-06-12 19:11:48 · 306 阅读 · 0 评论 -
细说Django urls.py urlpatterns
由于自己对Django系统生成的urls.py中有一部分不是特别了解,所以抽空仔细研究研究其中的相关内容原创 2018-06-05 15:29:50 · 15137 阅读 · 0 评论 -
Python+Django+SQLite制作TO-DO list(一、前期的小知识)
先贴上我的项目代码点击打开链接项目新手,吐槽中给点建议也是不错的1、先说说为什么开始做WEB前些日子主攻爬虫,但是觉得只弄爬虫少了些什么,所以就觉得应该搞个网页试试,于是乎项目上马,说搞就搞2、前期准备部署好Pycharm、Django。3、需要的知识储备HTML的相关小知识:参考W3school 1、HTML链接:<a href="www.example.com">这是一个链...原创 2018-05-25 16:10:17 · 944 阅读 · 0 评论 -
网址中的字符串转换
1、将网址中的字符串转化为人类可读的格式:from urllib import parse#将网址中的代表字符的东西转化成字符urltostr=parse.unquote("%E8%AF%97%E8%AF%8D")print(urltostr)结果为:诗词2、将人类可读的字符串转换成网址的格式:from urllib import parsestrtourl=parse.quote("诗词...原创 2018-05-13 14:22:40 · 3393 阅读 · 0 评论 -
Python handler(request)
在用python搭建服务器时有一个东西(姑且叫他东西吧)始终不得其解,今天查其他东西时偶然间发现了相关定义,可能存在理解不对的地方来源为aiohttp的官方文档这是原文中所说coroutine handler(request)Abstract method performing web-handler processing.Parameters:request – aiohttp.web.Requ...翻译 2018-04-13 16:44:48 · 3693 阅读 · 0 评论 -
利用BeautifulSoup、urllib、selenium爬取动态网站图片
1、导入相关包from selenium import webdriverfrom bs4 import BeautifulSoupfrom urllib.parse import urlparseimport timefrom urllib import requestimport re2、定义代理,防止被服务器拦截global headersheaders={ ...原创 2018-04-23 13:00:43 · 2109 阅读 · 1 评论 -
Django对数据库进行添加与更新
完成model后,在Terminal运行python manage.py makemigrations 生成数据库。然后可以进行保存操作对于没有没有外键的数据库:from .models import UserProfilefrom django.contrib.auth.hashers import make_passworduser_profile = UserProfile()user...原创 2018-06-07 09:03:58 · 37578 阅读 · 0 评论 -
Python中__repr__和__str__区别
class Test(object): def __init__(self, value='hello, world!'): self.data = value>>> t = Test()>>> t<__main__.Test at 0x7fa91c307190>>>> print t<__...转载 2018-06-18 20:54:28 · 172 阅读 · 0 评论 -
Python中ASCII码与字符的转化
Python内置ord函数用来将字符转化成ASCII码用法为:print('字符0 的ASCII码表示为',ord('0'))结果为:字符0 的ASCII码表示为 48Python内置chr函数用来将ASCII码化成字符用法为:print('ASCII码为97对应的字符为',chr(97))结果为:ASCII码为97对应的字符为 a...原创 2018-06-18 19:08:26 · 9597 阅读 · 0 评论