def

Selenium WebDriver-获取与切换浏览器窗口的句柄

会有一股神秘感。 提交于 2021-02-12 02:52:09
通过selenium webdriver去切换浏览器的窗口,需要通过句柄,具体代码如下: # encoding=utf-8 import unittest import time import chardet from selenium import webdriver class VisitSogouByIE(unittest.TestCase): def setUp(self): # 启动chrome浏览器 self.driver = webdriver.Chrome(executable_path = " e:\\chromedriver " ) def test_operateWindowHandle(self): url = " http://www.baidu.com " self.driver.get(url) # 获取当前窗口句柄 now_handle = self.driver.current_window_handle # 打印当前获取的窗口句柄 print now_handle # 百度搜索输入框中输入“selenium” self.driver.find_element_by_id( " kw " ).send_keys( " w3cschool " ) # 点击搜索按钮 self.driver.find_element_by_id( " su " )

教你如何利用python调用摄像头

痴心易碎 提交于 2021-02-11 21:27:05
这篇文章主要介绍了python调用摄像头的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 一、打开摄像头 import cv2 import numpy as np def video_demo(): capture = cv2.VideoCapture(0)#0为电脑内置摄像头 while(True): ret, frame = capture.read()#摄像头读取,ret为是否成功打开摄像头,true,false。 frame为视频的每一帧图像 frame = cv2.flip(frame, 1)#摄像头是和人对立的,将图像左右调换回来正常显示。 cv2.imshow("video", frame) c = cv2.waitKey(50) if c == 27: break video_demo() cv2.destroyAllWindows() 二、打开摄像头并截图 import cv2 cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 打开摄像头 while (1): # get a frame ret, frame = cap.read() frame = cv2.flip(frame, 1) # 摄像头是和人对立的,将图像左右调换回来正常显示 # show a frame cv2.imshow(

python 全栈开发,Day41(线程概念,线程的特点,进程和线程的关系,线程和python 理论知识,线程的创建)

自作多情 提交于 2021-02-11 20:49:15
昨日内容回顾 队列 队列 : 先进先出、数据进程安全 队列实现方式: 管道 + 锁 生产者消费者模型 : 解决数据供需不平衡 管道 双向通信 数据进程不安全 EOFError: 管道是由操作系统进行引用计数的, 必须在所有进程中关闭管道后才能生成EOFError异常 数据共享(不常用) Manager list dict 数据进程不安全的 进程池 存放进程的容器 在进程创建之初,创建固定个数的进程 会被多个任务循环利用 节省了进程创建和销毁的时间开销 降低了操作系统调度进程的压力 信号量和进程池的区别 信号量 n个任务开启n个进程, 但同一时间只能有固定个数的进程在执行 进程在等待被执行 进程池 n个任务开启固定个数的进程 因此同一时间只能有固定个数的进程在执行 任务在等待被执行  队列是内置锁的,所以别的应用调用它,是安全的。 凡是涉及到手动加锁的,都是不安全的。常用的一般都是消息中间件 没有返回值的情况 close和join成对使用 import time from multiprocessing import Pool def wahaha(i): time.sleep(1) print('*'*i) if __name__ == '__main__': p = Pool(5) #建议的数量是CPU核数+1 for i in range(5): p.apply_async

用类写连接mysql

十年热恋 提交于 2021-02-11 20:36:00
MYSQL_INFO= { ' host ' : ' 127.0.0.1 ' , ' user ' : ' root ' , ' password ' : ' 123456 ' , ' db ' : ' python ' , ' port ' :3306 , ' charset ' : ' utf8 ' , ' autocommit ' :True } import pymysql class MySql: def __init__ (self,host,user,password,db,port,charset,autocommit): try : self.conn = pymysql.connect(host=host, user=user,password= password, db =db, port= port, charset =charset, autocommit= autocommit) except Exception as e: print (e) else : self.cur = self.conn.cursor(cursor= pymysql.cursors.DictCursor) def execute(self,sql): try : self.cur.execute(sql) except Exception as e: return e

230. 二叉搜索树中第K小的元素

随声附和 提交于 2021-02-11 20:32:37
230. 二叉搜索树中第K小的元素 题意 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 解题思路 中序遍历,利用Python3中提供的生成器方法; 中序遍历,判断存储结点值的数组是否到到k,则表明访问的一个结点就是第k个最小的元素; 先获取跟结点处于的位置(第几个最小的元素),如果它比k小,则从右子结点中找,如果它比k大,则从左子节点中找; 实现 class Solution : def kthSmallest ( self , root : TreeNode , k : int ) -> int : """ 利用了Python3中新增的生成器方法; """ def gen ( r ): if r is not None : yield from gen ( r . left ) yield r . val yield from gen ( r . right ) it = gen ( root ) for _ in range ( k ): ans = next ( it ) return ans def kthSmallest ( self , root , k ): """ 中序遍历,判断当前访问的结点是否是第k个最小的个数; :type root:

Python的垃圾回收机制

*爱你&永不变心* 提交于 2021-02-11 18:57:20
总的来说, Python的垃圾回收机制是以引用计数为主,同时为了解决循环引用的问题以及提升效率,采取标记-清除和分代收集为辅助办法。 1. 引用计数 引用计数的核心思想是:每一个对象都有一个计数器 ob_refcnt 用来标记这个对象被引用的次数(比如被1个变量引用则为1,被2个变量引用则为2)。当引用次数为0时,系统会马上回收这个对象。 优点: 简单 实时性 缺点: 维护引用计数消耗资源 循环引用 详细介绍: 1.1 引用计数原理 首先介绍Python的对象是如何获取内存空间的。 下面举一个简单的例子 Class Node(object): def __init__ (self,val): self.value = val n1 = Node( " ABC " ) 当创建对象时Python立即向操作系统请求内存。(Python实际上实现了一套自己的内存分配系统,在操作系统堆之上提供了一个抽象层。为了简单,不展开说了) 假设我们已经创建了三个Python Node对象: 在内部,创建一个对象时,Python总是在对象的C结构体里保存一个整数,称为 引用数 。当对象刚被创建时,Python将这个值设置为1: 值为1说明分别有个一个指针指向或是引用这三个对象。假如我们现在创建一个新的Node实例,JKL: 与之前一样,Python设置JKL的引用数为1。然而

机器学习之贝叶斯垃圾邮件分类

守給你的承諾、 提交于 2021-02-11 17:45:11
代码来源于: https://www.cnblogs.com/huangyc/p/10327209.html ,本人只是简介学习 1、 贝叶斯.py import numpy as np from word_utils import * class NaiveBayesBase(object): def __init__ (self): pass def fit(self, trainMatrix, trainCategory): ''' 朴素贝叶斯分类器训练函数,求:p(Ci),基于词汇表的p(w|Ci) Args: trainMatrix : 训练矩阵,即向量化表示后的文档(词条集合) trainCategory : 文档中每个词条的列表标注 Return: p0Vect : 属于0类别的概率向量(p(w1|C0),p(w2|C0),...,p(wn|C0)) p1Vect : 属于1类别的概率向量(p(w1|C1),p(w2|C1),...,p(wn|C1)) pAbusive : 属于1类别文档的概率 ''' numTrainDocs = len(trainMatrix) # 长度为词汇表长度 numWords = len(trainMatrix[0]) # p(ci) self.pAbusive = sum(trainCategory) / float

RabbitMQ持久化

荒凉一梦 提交于 2021-02-11 17:28:13
我们知道,如果消息接收端挂了,消息会保存在队列里。下次接收端启动就会接收到消息。 如果RabbitMQ挂了怎么办呢?这时候需要将消息持久化到硬盘 消息发送端:producer ........... # 建立管道 channel = connection.channel() # 声明队列 1、加上durable=True进行队列持久化。两边都要加(当RabbitMQ服务down了之后) channel.queue_declare(queue= " q1 " ,durable= True) # 发消息 channel.basic_publish(exchange= '' , routing_key = ' q1 ' , body = ' everything is just beginning! ' , # 3、加上这句话,对消息进行持久化,只需要在发送方写(RabbitMQ服务down了之后) properties=pika.BasicProperties(delivery_mode=2 )) ....... 消息接收端:consumer ......... # 建管道 channel = connection.channel() # 声明队列 2、加上durable=True进行队列持久化 channel.queue_declare(queue= ' q1 ' , durable

机器学习-贝叶斯数据集

隐身守侯 提交于 2021-02-11 15:24:24
#朴素贝叶斯定力 import numpy as np import pandas as pd import matplotlib from matplotlib import pyplot as plt %matplotlib inline matplotlib.rcParams['font.sans-serif'] = ['SimHei'] data = pd.read_csv('./010-data_multivar.csv',header=None) #拆分数据 dataset_X,dataset_y = data.iloc[:,:-1],data.iloc[:,-1] # print(dataset_X.head()) dataset_X = dataset_X.values dataset_y = dataset_y.values # print(dataset_y) #将标签去重 classes = list(set(dataset_y)) print(classes) #数据集可视化 def visual_2D_dataset(dataset_X,dataset_y): '''将二维数据集dataset_X和对应的类别dataset_y显示在散点图中''' assert dataset_X.shape[1]==2,'only support dataset with

flask模板应用-消息闪现(flash()) --

允我心安 提交于 2021-02-11 12:52:27
消息闪现 flask提供了一个非常有用的flash()函数,它可以用来“闪现”需要提示给用户的消息,比如当用户登录成功后显示“欢迎回来!”。在视图函数调用flash()函数,传入消息内容,flash()函数把消息存储在session中,我们需要在模板中使用全局函数get_flashed_messages()获取消息并将它显示出来。 通过flash()函数发送的消息会存储在session对象中,所以我们需要为程序设置秘钥。可以通过app.secret_key属性或配置变量SECRET_KEY设置。 你可以在任意视图函数中调用flash()函数发送消息。例如: just_flash视图中,通过flash()函数发送一条消息,然后重定向到index视图。 @app.route( ' /flash ' ) def just_flash(): flash( ' I am flash, who is looking for me? ' ) return redirect(url_for( ' watchlist ' )) flask提供了get_flashed_message()函数用来在模板里获取消息,因为程序的每一个页面都有可能需要显示消息,我们把获取并显示消息的代码放到基模板中content块的上面,这样就可以在页面主体内容上面显示消息 在base.html模板中加入处理闪现消息的函数: