Python
文章平均质量分 57
Peace & Love
https://github.com/584807419
展开
-
python3 requests https 请求 报 SSLContext 相关递归错误
一、错误信息:2019-11-19 15:14:40 : Provider before requests .post2019-11-19 15:14:41 : error infoTraceback (most recent call last): File "/root/operation/spider/web/lh_spider_config/utils/run_provider/s...原创 2019-11-19 17:10:29 · 4570 阅读 · 1 评论 -
Python 内置函数 locals globals
这两个函数主要提供基于字典的访问局部和全局变量的方式。1.namespacePython使用叫做名字空间的东西来记录变量的轨迹。名字空间只是一个字典,它的键字就是变量名,字典的值就是那些变量的值。实际上,名字空间可以象Python的字典一样进行访问 每个函数都有着自已的名字空间,叫做局部名字空间,它记录了函数的变量,包括函数的参数和局部定义的变量。每个模块拥有它自已的名字空间,叫做全局名字空间,它原创 2017-12-26 10:22:57 · 548 阅读 · 0 评论 -
VS Code 尝鲜之 配置Python开发环境
平时用 pycharm 比较多,今天尝尝鲜,微软的 vs code 风评不错,恰逢周末有时间,便研究了一番1.vs code 安装打开官网后点击绿色的 download 即可2.安装微软官方 Python 插件如图,已经安装好了 4.了解一些概念官网有介绍,vs code,单次运行一个脚本视为一个 task,相应的配置文件为 tasks.json,整个文件夹或者多个文件夹视为一个工作空间,配置文件原创 2017-12-24 08:36:48 · 74977 阅读 · 3 评论 -
windows 安装 virtualenvwrapper
实测windows10平台:一、安装pip install virtualenvwrapper-win二、设置位置系统环境变量新建变量名WORKON_HOME,变量值为虚拟环境文件夹所存放的位置三、新建和激活新建虚拟环境13mkvirtualenv 1313接激活deactivate会取消激活workon 1313会直接激活不同版本的虚拟环境mkvirtualenv --python=C:\User原创 2017-10-19 23:51:50 · 900 阅读 · 0 评论 -
python中的装饰器,函数带参数的装饰器,带类参数的装饰器
其实,python 中的装饰器本质上就是一个函数,这个函数接收其他的函数作为参数,并将其以一个全新的修改后的函数替换它 关于装饰器的知识是python面试中比较常见的,对于装饰器的理解可以看这篇文章:理解Python中的装饰器,理解之后,再手写一遍下面的8种装饰器加深理解以后使用就更轻松多了!1.最简单的函数def myfunc() print "i am a funct...原创 2017-12-22 13:26:43 · 5151 阅读 · 3 评论 -
sys.argv[] 用法
sys.argv[]是用来获取命令行输入的参数的(参数和参数之间空格区分),sys.argv[0]表示代码本身文件路径,所以从参数1开始,表示获取的参数了例子0:test.py#-*-coding:utf-8-*-from sys import argvscript,first,second,third = argvprint ("The script is called:{%s}"% scrip原创 2017-11-18 21:36:08 · 33086 阅读 · 1 评论 -
Python __init__.py 使用
init.py 的作用是把文件夹变为一个Python包,Python 中的每个库的包中,都有init.py 文件,我们在导入一个包时,实际上是导入了它的init.py文件。这样我们可以在init.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入。# package.py 里面的代码# __init__.pyimport reimport urllibimport sysimpo原创 2017-11-18 22:19:19 · 4632 阅读 · 0 评论 -
Python中的的函数的参数传递
def sum1(item,a=[]): a.append(item) return a如果这么定义函数的参数,因为a指向[]这个空列表对象,以后每次调用这个函数都会调用这个指向同一个空列表对象的参数,造成数据异常!!!比如调用同一函数两次得到不同数据>>> print sum1('one')['one']>>> print sum1('one')['one', 'one']原创 2017-08-23 21:57:18 · 353 阅读 · 0 评论 -
pycharm 远程调试 上传 helpers 卡住 解决
公司开发环境跑在linux上,用了一周都没问题,突然今天无法使用了,具体表现就是一打开pycharm,同步远程解释器就卡在上传helper文件之处,折腾一上午加一中午,用这个方法解决了,写下来避免其他人入坑! 解决:pycharm安装文件夹下 例如C:\Program Files\JetBrains\PyCharm 2017.2.3这里面找到并且 删掉skeletons文件夹,重新启动再配置远原创 2017-11-09 13:34:24 · 12547 阅读 · 4 评论 -
os和sys库 备忘
os.path.abspath("xxx.xx") 取xxx.xx的绝对路径sys.pathpython的搜索模块的路径集,是一个listos.path.pardir父目录os.path.dirname('C:\\Users\\zhangkun-s\\AppData\\Roaming\\360se6\\Application\\360se.exe')返回目录名 C:\Users\zhangkun-s原创 2017-07-04 09:56:38 · 338 阅读 · 0 评论 -
Python3 Scrapy 安装方法
写了几个爬虫的雏形,想看看有没有现成的,发现了Scrapy,笔记本win10,想用新版本py3来装Scrapy,老是提示error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-b原创 2017-04-09 15:11:10 · 3733 阅读 · 2 评论 -
Unicode 转 dict
写API过程中遇到了个request请求的Unicode转Dict的需求,研究了下这样实现,记下来备忘: Unicode先转为stringimport simplejsonsimplejson.loads(request.query_params.get("params").encode('unicode-escape').decode('string_escape'))#合并到之...原创 2018-01-16 20:09:44 · 2923 阅读 · 0 评论 -
python 重写logging.Handler的emit 实现日志输出到 redis 数据库
python中想要把日志输出到redis,可以写一个类继承logging.Handler,并重写emit方法来实现import loggingimport datetimefrom redis import StrictRedis, ConnectionPoolfrom core.settings import REDIS_HOST, REDIS_DB, REDIS_PORTpool ...原创 2019-09-27 14:18:35 · 3120 阅读 · 0 评论 -
跟着董伟明大佬的书了解了解 python常用的类库
一、errno在日常开发中经常需要捕获各种异常,做特殊处理。举个例子: os.kill(12345,0)输出Traceback (most recent call last): File "/Users/zhangkun/Documents/GitHub/geektime/test.py", line 4, in <module> os.kill(12345...原创 2019-08-02 10:41:51 · 815 阅读 · 1 评论 -
python中的线程相关概念简单梳理
1.简单启动一个线程python标准库提供了threading模块,启动一个线程就是把一个函数传给Thread实例,再调用start()运行起来import threadingimport timedef loop(): print(f'----------thread :{threading.current_thread().name} is running...') ...原创 2019-06-27 22:14:00 · 327 阅读 · 0 评论 -
再用半个小时你就可以彻底了解 python3.6协程中的async/await的来源了
看到一篇非常明晰的讲述,转载过来备忘Python中的协程大概经历了如下三个阶段:最初的生成器变形yield/send引入@asyncio.coroutine和yield from在最近的Python3.5版本中引入async/await关键字一、生成器变形yield/send普通函数中如果出现了yield关键字,那么该函数就不再是普通函数,而是一个生成器。def mygen(al...转载 2019-08-01 18:15:06 · 1818 阅读 · 0 评论 -
Python的type和object之间到底是什么关系?
V2EX上有个问题:三年左右的 Python 后端 , 大概要能到什么样到水平才合格啊?下面的回复众说纷纭,但是有个问题比较新颖:描述一下 type 与 object 的关系,查了一下网上的答案,加上一些自己的理解写到这里备忘(其实印象中以前在某本书上看过的,但是不想翻书找,搜索引擎提高学习效率啊)前提是我们已经了解了面向对象编程中的类的继承关系,类的实例化概念,在这个基础上来理解会更容易一些。...原创 2019-06-01 12:00:57 · 3706 阅读 · 1 评论 -
python 全局变量 重载 错误 local variable referenced before assignment
python2.7 Django 1.8概述:当在函数外声明了全局变量,在函数内重新声明,就会覆盖函数外的全局变量,如果函数外或者其他函数对全局变量有引用,此时会导致错误local variable referenced before assignment出现背景:Django orm 采用代理模型继承和自定义管理器对默认模型拿到的queryset做了调整,为了使查到的数据都是调整后的q...原创 2019-05-07 17:03:24 · 3829 阅读 · 0 评论 -
python 常用模块 之 datetime 模块
datetime是Python处理日期和时间的标准库1. 获取现在的日期时间2. 获取指定日期时间直接用参数构造即可3.datetime对象转时间戳直接调用datetime对象的timestamp方法即可4.时间戳转datetime对象用datetime对象的fromtimestamp方法,参数是时间戳5.字符串和datetime对象互转1.字符串转datetime直接用...原创 2019-04-02 16:48:09 · 235 阅读 · 0 评论 -
python 常用模块 之 requests 模块
1. GET请求1.访问一个页面import requestsr=requests.get('http://www.so.com')print(r.status_code)print(r.text)2.带参数import requestsparams = {'a':1,'b':2}r=requests.get('http://www.so.com', params=param...原创 2019-04-07 15:07:51 · 342 阅读 · 0 评论 -
python随机生成字母验证码图片
from PIL import Image, ImageDraw, ImageFont, ImageFilterimport randomdef rndChar(): return chr(random.randint(65,90))def rndColor(): return (random.randint(64,255),random.randint(64,255),...原创 2019-04-06 16:19:21 · 633 阅读 · 0 评论 -
python 类中的 特殊方法
1. 打印和输出相关__str____repr__分别应用于打印和直接显示2.用于循环如果一个类想被用于for循环,那这个类就必须实现__iter__()和__next__()方法3.用下标获取元素如果想要用下表[x]的方式来获取元素,name需要在类方法里面实现__getotem__()如果要赋值用__setitem__()方法,如果要删除某个元素用__delitem__(...原创 2019-03-31 14:19:56 · 833 阅读 · 0 评论 -
python类中的 装饰器 @property
1.set和get方法熟悉java的同学可能知道,java类中对属性可以IDE自动生成对应的get和set方法,但是python中没有的,python比较自由,但是自由的设置和读取类或者实例的属性,就没办法在设置和读取的时候进行一些检查了,对于 这种情况我们可以手动写自己的set和get方法2. 作为一个懒蛋,我觉得有点麻烦能不能像普通属性调用那样简单粗暴的调用set和get方法呢,答案是...原创 2019-03-31 11:33:39 · 332 阅读 · 0 评论 -
python 类 __slots__ 可限制添加属性和优化减少内存占用
1.给类或者示例添加属性和方法正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,对于class本身也是一样的2.使用__slots__如果先要对class和实例加以限制,可以在定义class的时候,定义一个__slots__,来限制能够添加的属性:这么做之后,没在__slots__里面标记好的属性就不能随便添加到类或者示例中了...原创 2019-03-31 11:05:03 · 538 阅读 · 0 评论 -
python http 认证 auth oauth 认证
# -*- coding: utf-8 -*-import requestsBASE_URL = 'https://api.github.com'def construct_url(end_point): return '/'.join([BASE_URL, end_point])def basic_auth(): """http基本认证""" response = req原创 2017-04-06 09:53:41 · 7299 阅读 · 0 评论 -
python 中的迭代器和生成器归纳总结
1.容器(container)容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个迭代获取,可以用in,not in关键字判断元素是否包含在容器中。通常这类数据结构把所有的元素存储在内存中(也有一些特殊的存在)。再Python中常见的容器对象:1. list ,deque, ...2. set, frozensets, ...3. dict, defaultdict, OrderedD原创 2017-04-21 14:40:51 · 660 阅读 · 0 评论 -
编写一个ORM框架
ORM全称“Object Relational Mapping”,即对象-关系映射,就是把关系数据库的一行映射为一个对象,也就是一个类对应一个表,这样,写代码更简单,不用直接操作SQL语句。要编写一个ORM框架,所有的类都只能动态定义,因为只有使用者才能根据表的结构定义出对应的类来。编写底层模块的第一步,就是先把调用接口写出来。比如,使用者如果使用这个ORM框架,想定义一个User类来操作对应的数据原创 2017-04-20 15:46:52 · 764 阅读 · 0 评论 -
python 事件 响应 钩子 event hooks
# -*- coding: utf-8 -*-import requestsdef get_key_info(response, *args, **kwargs): """callback function""" print response.headers['Content-Type']def main(): """ 主程序 """ requests原创 2017-04-06 08:17:20 · 3171 阅读 · 0 评论 -
python request 下载 图片 demo
利用流传输下载图片# -*- coding: utf-8 -*-import requestsdef download_image(): """ demo:下载图片 :return: """ headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHT原创 2017-04-06 07:43:10 · 3854 阅读 · 0 评论 -
专杀工具源码 V1.5
-- coding:utf-8 --import glob import os import ctypes from _winreg import *currentpath1 = os.getcwd() currentpath2 = ‘现在程序所在的路径为 :’+ currentpath1 print currentpath2.decode(“utf-8”)f = glob.glob(‘C原创 2017-03-26 00:02:14 · 535 阅读 · 0 评论 -
将Python.py文件打包为.exe可执行程序
pyinstaller 库的使用 PyInstaller是一个十分有用的第三方库,它能够在Windows、Linux、 Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个 独立文件方便传递和管理。 PyInstaller 需要在命令行(控制台)下用 pip 工具安装,如下::>pip ins转载 2017-03-15 11:02:21 · 799 阅读 · 0 评论 -
python _winreg 读取 注册表 windows error 5
python操作注册表出现“WindowsError: (5, ”)” 其实解决的办法很简单,通过阅读文档发现,问题在于 _winreg.OpenKey()中的sam参数 sam参数用来定义key的存取类型 https://docs.python.org/2/library/_winreg.html#access-rightshttps://docs.python.org/2/library原创 2017-04-07 11:45:18 · 4305 阅读 · 0 评论 -
计时器,每隔一定时间执行一个动作,用于抓取数据
因为要定时抓数据,所以用笨方法实现一个定时器,不知道有没有更好的方法,写上备用 不用sleep的原因是执行过程中需要消耗几秒,加上sleep的时间,就会造成时间间隔不准确 最开始笨了,用格式化之后的时间做运算,真是啥,后来想60之后不行啊,用时间戳多好啊 # coding:utf-8from datetime import *import time; # 引入time模块# print原创 2017-07-25 22:05:04 · 3899 阅读 · 0 评论 -
python 时间模块 用法整理(time and datetime)
一.time模块1.使用time模块来获取当前的时间并转换为指定格式time.time()可以得到当前的时间戳 time.strftime(format[, t])将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出.示例import timeprint (time.strftime("%H:%M:%S"))#24小时格式print (time...原创 2017-07-27 09:49:29 · 956 阅读 · 0 评论 -
看过Django后回头来看Flask(1)
用了Django后回头来看看FLASK,把一些值得写的区别和体会记录下来,加深一下印象和理解1.表单Flask表单有更加方便的实现方法Flask-WTF这个扩展让搞起FLASK的表单轻松加愉快 使用 Flask-WTF 时,每个 Web 表单都由一个继承自 Form 的类表示。这个类定义表单中的一组字段,每个字段都用对象表示。字段对象可附属一个或多个验证函数。验证函数用来验证用户提交的输入值是否符原创 2017-09-02 14:35:18 · 12321 阅读 · 0 评论 -
pip 换源、安装、升级,pip超时,报错 解决方案
安装mysqlclient出错,终于找到解决神方法:pip安装报错: Failed building wheel for failed with exit status 2 解决方案import platformplatform.architecture() 看下平台信息 然后去http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载对应版本所需w原创 2017-06-28 14:39:29 · 6195 阅读 · 0 评论 -
Python中 copy, deepcopy 的区别
copy就是表面上复制一份,复制完的东西里面,第一层的都是自己的,但是深层的东西还是指向原来的对象,deepcopy就是真正的完全独立搞一个备份出来通过例子来说明例子1import copyorigin = 1cop1 = copy.copy(origin)cop2 = copy.deepcopy(origin)origin = 2print cop1#输出1print cop2#输出2原创 2017-08-21 18:22:33 · 577 阅读 · 0 评论 -
网络编程
1.Socket通信原理简介socket 网络套接字,就是在不同的计算机之间进行通信的一个抽象 socket是两个节点之间的数据传输,端点可能处于同一台主机,也可能位于不同的主机中,通常属于C/S架构,一个连接发起者(initiator)另外一个连接侦听者(listener),通常将从事侦听的socket称作“服务器”,将发起连接的套接字称作“客户端”。 TCP握手与socket通信细节:htt原创 2017-08-21 15:09:49 · 278 阅读 · 0 评论 -
字符串转换为日期类型(<class 'datetime.datetime'>),并且做计算
两年前做PHP时候会的东西现在都忘了,学习Django的时候从头搞起来昨晚搞到两点多,今早上类型转换搞的头大,Google半天发现cookbook有介绍datetime标准库一下就能解决了,柳暗花明又一村的感觉啊,家里买了一本一直没看,抽空得看下啦,另外不熟悉标准库有坑啊,搞完这个要补下从from提交的表单里获取字符串转换为日期,并且做计算#我是字符串startdateformetstr = re原创 2017-07-29 12:59:04 · 3114 阅读 · 0 评论 -
Python 多线程 多进程 协程 yield
python中多线程和多进程的最大区别是稳定性和效率问题多进程互相之间不影响,一个崩溃了不影响其他进程,稳定性高 多线程因为都在同一进程里,一个线程崩溃了整个进程都完蛋多进程对系统资源开销大,多线程对系统资源开销小,所以这方面来说多线程会比多进程快一点点关于线程和进程的详细使用方法这里有https://www.liaoxuefeng.com/wiki/0014316089557264a6b3489原创 2017-08-20 20:32:16 · 5559 阅读 · 0 评论