![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
crazyBird_GJY
人生苦短就用python
展开
-
hashlib —— Python 的 md5 和 sha1 加密
0. md5 与 sha1MD5 的全称是 Message-Digest Algorithm 5(信息-摘要算法)。128 位长度。目前 MD5 是一种不可逆算法。具有很高的安全性。它对应任何字符串都可以加密成一段唯一的固定长度的代码。md5 的应用场景: 加密网站注册用户的密码。 (但去年的各大网站密码泄漏事件确实让人蛋疼……)网站用户上传图片 / 文件后,计算出 MD5 值作为文件名。(MD5...转载 2018-05-02 10:45:28 · 204 阅读 · 0 评论 -
Python中collections的用法(1)
collectionscollections是Python内建的一个集合模块,提供了许多有用的集合类。namedtuple我们知道tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成:p = (1, 2)1但是,看到(1, 2),很难看出这个tuple是用来表示一个坐标的。定义一个class又小题大做了,这时,namedtuple就派上了用场:from collections impor...转载 2018-05-11 14:08:21 · 197 阅读 · 0 评论 -
Python中collections的用法(2)
引言Python为我们提供了4种基本的数据结构:list, tuple, dict, set,但是在处理数据量较大的情形的时候,这4种数据结构就明显过于单一了,比如list作为单向链表在某些情形插入的效率会比较低,有时候我们也需要维护一个有序的dict。所以这个时候我们就要用到Python标准库为我们提供的collections包了,它提供了多个有用的集合类,熟练掌握这些集合类,不仅可以让我们让写...原创 2018-05-11 14:48:13 · 494 阅读 · 0 评论 -
python的扩展包requests的高级用法
Python 标准库中的 urllib2 模块提供了你所需要的大多数 HTTP 功能,但是它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。Requests 完全满足如今网络的需求。国际化域名和 URLsKeep-Alive & 连接池持久的 Cookie 会话类浏览器式的 SSL 加密认证基本/摘要式的身份认证优雅...转载 2018-04-28 10:39:33 · 250 阅读 · 0 评论 -
python中的Mixin
声明:本文适合初中级Python程序员阅读,另外本文措词可能会导致阅读者不适,敬请PG。 引子嗯,为什么要谈Mixin啊?因为出现了Mixin这样一个东西呀,就像C++社区很多人谈论template一样啊,Python社区也很多会谈论Mixin的(以后会的,嘻嘻),所以我就来凑凑热闹了。 嗯,为什么要Mixin呀?这个,基本上已经是我这篇文章里要讲的东西了,所以,我会用本文的大部分篇幅来回答你这个...转载 2018-04-28 13:29:14 · 227 阅读 · 0 评论 -
python异步爬虫
本文主要包括以下内容 线程池实现并发爬虫回调方法实现异步爬虫协程技术的介绍一个基于协程的异步编程模型协程实现异步爬虫线程池、回调、协程我们希望通过并发执行来加快爬虫抓取页面的速度。一般的实现方式有三种:线程池方式:开一个线程池,每当爬虫发现一个新链接,就将链接放入任务队列中,线程池中的线程从任务队列获取一个链接,之后建立socket,完成抓取页面、解析、将新连接放入工作队列的步...转载 2018-05-08 08:46:46 · 177 阅读 · 0 评论 -
协程及Python中的协程
阅读目录1 协程2 Python中如何实现协程回到顶部1 协程1.1协程的概念 协程,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程。(其实并没有说明白~) 我觉得单说协程,比较抽象,如果对线程有一定了解的话,应该就比较好理解了。 那么这么来理解协程比较容易: 线程是系统级别的,它们是由操作系统调度;协程是程序级别的,由程序员根据需要自己调度...转载 2018-06-12 21:13:51 · 164 阅读 · 0 评论 -
线程进程和协程
进程:优点:提高效率,利用CPU多核优势开启个数:理论上是CPU内核数的1-2倍描述:一段程序或者脚本的执行,CPU资源分配的最小单元缺点:资源消耗非常大,进程过多,CPU切换进程也消耗资源,资源共享困难使用场景:CPU密集型应用(计算密集型)线程:优点:提高效率,资源共享开启个数:跟计算硬件有关系,跟应用场景有关系,一半高于可开启进程数描述:进程下可以开启多个线程,CPU调度的最小单元缺点:开启...原创 2018-06-12 21:14:50 · 123 阅读 · 0 评论 -
python 的os.getpid()和os.fork()函数
import osimport sysimport time processNmae = 'parent' print "Program executing ntpid:%d,processNmae:%s"%(os.gitpid(),processNmae) #attempt to fork child processtry: forkPid = os.fork()except OSErro...转载 2018-06-12 21:41:23 · 5064 阅读 · 0 评论 -
python的sys.argv
「argv」是「argument variable」参数变量的简写形式,一般在命令行调用的时候由系统传递给程序。这个变量其实是一个List列表,argv[0] 一般是被调用的脚本文件名或全路径,和操作系统有关。sys.argv变量是一个字符串的列表。特别地,sys.argv包含了命令行参数 的列表,即使用命令行传递给你的程序的参数。注意,Python从0开始计数,而非从1开始。sys.argv[]...转载 2018-06-12 21:55:29 · 561 阅读 · 0 评论 -
python 进程创建和共享内容的方法
1.使用Pool来创建进程from multiprocessing import Pooldef f(n): return n*nif __name__=="__main__": p=Pool(5) a=range(10) print(p.map(f,a))p.map会将a列表中的数据依次循环给f函数。但是当函数需要两个参数时,该方法不适用。2.使用Proces...转载 2018-06-12 22:13:05 · 109 阅读 · 0 评论 -
python消息队列Queue(1)
实例1:消息队列Queue,不要将文件命名为“queue.py”,否则会报异常“ImportError: cannot import name 'Queue'”[python] view plain copy#coding=utf-8 from multiprocessing import Queue q = Queue(3)#初始化一个Queue对象,最多可接收三条put消息 q....转载 2018-06-13 18:30:11 · 1360 阅读 · 0 评论 -
python3 Serial 串口助手的接收读取数据
#coding=gb18030import threadingimport timeimport serialclass ComThread: def __init__(self, Port='COM3'): self.l_serial = None self.alive = False self.waitEnd = None ...原创 2018-06-08 09:30:57 · 5362 阅读 · 0 评论 -
获取雾霾检测数据
#encoding=utf-8 import os import serial import time from struct import * # 打开串口 print "Opening Serial Port...", # 这里是通信端口,不同系统有所不同 ser = serial.Serial("/dev/ttyUSB0",baudrate=9600,timeout=2.0) pri...转载 2018-06-08 09:32:47 · 1381 阅读 · 0 评论 -
python serial 模块使用方法
一、概述 pyserial模块封装了对串口的访问。二、特性 在支持的平台上有统一的接口。 通过python属性访问串口设置。 支持不同的字节大小、停止位、校验位和流控设置。 可以有或者没有接收超时。 类似文件的API,例如read和write,也支持readline等。 支持二进制传输,没有null消除,没有cr-lf转换。三、系统要求 pytho...原创 2018-06-08 09:34:13 · 3262 阅读 · 0 评论 -
Python实现支付宝在线支付(1)
windows系统安装Python虚拟环境首先保证你的系统已经安装好了Python安装virtualenvC:\WINDOWS\system32>pip3 install virtualenvCollecting virtualenv Downloading virtualenv-15.1.0-py2.py3-none-any.whl (1.8MB) 100% |███████...转载 2018-06-29 20:18:26 · 826 阅读 · 0 评论 -
python中的basestring()
说明:basestring是str和unicode的超类(父类),也是抽象类,因此不能被调用和实例化,但可以被用来判断一个对象是否为str或者unicode的实例,isinstance(obj, basestring)等价于isinstance(obj, (str, unicode));>>> isinstance("Hello world", str)True>>&...转载 2018-06-27 11:20:22 · 619 阅读 · 0 评论 -
python 判断参数为Nonetype类型或空值
Nonetype和空值是不一致的,可以理解为Nonetype为不存在这个参数,空值表示参数存在,但是值为空判断方式如下:if hostip is None: print "no hostip,is nonetype" elif hostip: print "hostip is not null" else: print " hostip i...转载 2018-06-27 11:25:43 · 9385 阅读 · 0 评论 -
python中的encode()和decode()函数
对于很多人来说,python的中字符转码是一件很头疼的事情,本来期望结果输出的是中文,结果来一段像这样\xe4\xbd\xa0\xe5\xa5\xbd像是乱码的字符串。现在来深入研究下与之相关的encode()和decode()函数,和如何把如乱码般的字符串转成中文。encode()和decode()都是字符串的函数,可直接查看关于python字符串章节的官方文档: https://docs.py...转载 2018-06-27 11:59:03 · 3397 阅读 · 0 评论 -
python3.6.2执行AES加密及解密方法
python版本:3.6.2 首先安装pycryptodomecmd执行命令:pip install pycryptodome特别简单,代码如下:#!/usr/bin/python# -*- coding: utf-8 -*-import base64from Crypto.Cipher import AES# str不是16的倍数那就补足为16的倍数def add_to_16...转载 2018-06-27 20:02:52 · 929 阅读 · 1 评论 -
python 分析http查询字符串 urlparse.parse_qs
如何把get请求的参数转成字典 (Map) 12urlparse.parse_qs(params) //str 需要转成字典的 请求参数//{'phone': ['075988888888'], 'id': ['10'], 'name': ['\xe4\xb8\xad\xe6\x96\x87']} 获取一个网站的get 请求需要的参数1result = urlparse.urlparse(url...转载 2018-06-27 21:03:40 · 543 阅读 · 0 评论 -
Python使用Pycrypto库进行RSA加密的方法详解
RSA加密算法是一种强大的公钥加密算法,安全性很高,这里我们来看一下Python使用Pycrypto库进行RSA加密的方法详解密码与通信密码技术是一门历史悠久的技术。信息传播离不开加密与解密。密码技术的用途主要源于两个方面,加密/解密和签名/验签在信息传播中,通常有发送者,接受者和窃听者三个角色。假设发送者Master想要写信给接受者Ghost,可是又不想信的内容被别人看到,因此Master需要先...转载 2018-06-28 08:21:07 · 5814 阅读 · 0 评论 -
Python接入支付宝进行PC端支付
1. 支付宝开放平台登录,使用支付宝账号登录https://open.alipay.com/platform/home.htm2.选择沙箱模式 【支付宝提供了测试环境】https://docs.open.alipay.com/200/1053113.支付宝开发者文档https://openhome.alipay.com/developmentDocument.htm4.电脑网站支付https:/...转载 2018-06-28 08:50:10 · 959 阅读 · 0 评论 -
支付宝第三方接入及python中密钥对的生成
1 alipay.py#! /usr/bin/env python# -*- coding: utf-8 -*-from datetime import datetimefrom Crypto.PublicKey import RSAfrom Crypto.Signature import PKCS1_v1_5from Crypto.Hash import SHA256fro...原创 2018-06-28 09:14:37 · 1928 阅读 · 0 评论 -
用Python实现RSA签名和验签
RSA是一种非对称加密算法,简单理解就是两个密钥:一个公钥,一个私钥。 同时它也可以用来签名和验签,正好与加密相反。加密:公钥加密,私钥解密;签名:私钥签名,公钥验签。有意思的是有些人分不清公钥私钥的用处,这里提供一个思路: 用作加密时,密文泄露是无所谓的(相对而言),重要的是用于解密的密钥必须安全,所以用不公开的私钥来解密,用公钥来加密; 用作签名时,目的是防止别人伪造我的身份发信息,所以用私钥...转载 2018-06-28 22:00:27 · 1153 阅读 · 0 评论 -
python利用lxml读写xml格式文件
之前在转换数据集格式的时候需要将json转换到xml文件,用lxml包进行操作非常方便。1. 写xml文件a) 用etree和objectifyfrom lxml import etree, objectifyE = objectify.ElementMaker(annotate=False)anno_tree = E.annotation( E.folder('VOC2014_in...转载 2018-07-11 14:11:50 · 376 阅读 · 0 评论 -
Python中xml和json格式互转
Python中xml和json格式是可以互转的,就像json格式转Python字典对象那样。xml格式和json格式互转用到的xmltodict库安装xmltodict库C:\Users\Administrator>pip3 install xmltodictCollecting xmltodict Downloading xmltodict-0.11.0-py2.py3-none-any...转载 2018-07-11 14:17:38 · 2589 阅读 · 1 评论 -
Python正则替换字符串函数re.sub用法
#!/usr/bin/env python#encoding: utf-8import reurl = 'https://113.215.20.136:9011/113.215.6.77/c3pr90ntcya0/youku/6981496DC9913B8321BFE4A4E73/0300010E0C51F10D86F80703BAF2B1ADC67C80-E0F6-4FF8-B570-7D...转载 2018-07-17 15:32:09 · 1335 阅读 · 0 评论 -
Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的一些关于header,代理,超时,认证,异常处理处理方法,下面一起来看看。 python3 抓取网页资源的 N 种方法1、最简单1 import urllib.request2 3 ...转载 2018-07-20 15:16:55 · 304 阅读 · 0 评论 -
Python 下载图片的三种方法
import osos.makedirs('./image/', exist_ok=True)IMAGE_URL = "http://image.nationalgeographic.com.cn/2017/1122/20171122113404332.jpg" def urllib_download(): from urllib.request import urlretrieve ...转载 2018-07-15 15:27:18 · 703 阅读 · 0 评论 -
Python处理HTML转义字符的5种方式
写爬虫是一个发送请求,提取数据,清洗数据,存储数据的过程。在这个过程中,不同的数据源返回的数据格式各不相同,有 JSON 格式,有 XML 文档,不过大部分还是 HTML 文档,HTML 经常会混杂有转移字符,这些字符我们需要把它转义成真正的字符。什么是转义字符在 HTML 中 <、>、& 等字符有特殊含义(<,> 用于标签中,& 用于转义),他们不...转载 2018-07-30 16:28:32 · 2727 阅读 · 0 评论 -
异步网络爬虫的Python实现(1)
本文翻译自500L系列文章,原文链接, 原文作者A. Jesse Jiryu Davis 和 Guido van Rossum.A. Jesse Jiryu Davis是纽约MongoDB的一名工程师,他是MongoDB Python 驱动Motor的主要作者,同时他也是MongoDB C语言驱动项目的重要成员。他的个人博客地址。Guido van Rossum是Python的创建者,Py...转载 2018-08-04 16:00:09 · 174 阅读 · 0 评论 -
python中的排序方法
八大排序算法的 Python 实现本文用Python实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。1、插入排序描述插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组...转载 2018-08-09 10:34:43 · 425 阅读 · 0 评论 -
python实现把两个排好序的列表合并成一个排好序的列表
一:方法1#将两个排好序的列表合并成一个排好序的列表def merge_list(a,b): if not a: return b if not b: return a a_index = b_index = 0 ret = list() while a_index < len(a) and b_index <...原创 2018-08-09 11:15:39 · 1663 阅读 · 1 评论 -
python实现字典树
#定义一个字典树节点的类class TrieNode(object): def __init__(self): """ Initialize your data structure here. """ self.data = {} self.is_word = False#字典树class Trie(...转载 2018-08-09 16:19:28 · 753 阅读 · 0 评论 -
python给图片添加水印
一:添加字体#打开图片im = Image.open("./222.jpg").convert('RGBA')#新建一个空白图片,尺寸与打开图片一样txt=Image.new('RGBA', im.size, (0,0,0,0))#设置字体fnt=ImageFont.truetype("c:/Windows/Fonts/Tahoma.ttf", 40)#操作新建的空白图片>...转载 2018-08-09 18:23:27 · 10304 阅读 · 0 评论 -
python中的urlencode与urldecode
当url地址含有中文,或者参数有中文的时候,这个算是很正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至'/'做一下编码转换。所以对于一些中文或者字符,url不识别的,则需要进行转换,转换结果如下:一、urlencodeurllib库里面有个urlencode函数,可以把key-value这样的键值对转换成我们想要的格式,返回的是a=1&...转载 2018-08-10 10:30:05 · 355 阅读 · 0 评论 -
cookies详解
cookies简介cookie是什么?Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于 RFC2109 和 2965 中的都已废弃,最新取代的规范是 RFC6265[1]。Cookie其实就是浏览器缓存。cookie的生命周期会话cookie:没有设置expires(是个时间...转载 2018-08-01 14:08:16 · 223 阅读 · 0 评论 -
selenium和requests进行cookies保存读取操作
使用selenium模拟登陆百度from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support import expected_...转载 2018-08-01 14:56:03 · 1751 阅读 · 0 评论 -
常见加密方式和Python实现
前言我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes。所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错。将字符串和Bytes互相转换可以使用encode()和decode()方法。如下所示:# 方法中不传参数则是以默认的utf-8编码进行转换In [1]: '南北'.encode()Out...转载 2018-08-10 11:47:52 · 548 阅读 · 0 评论