def

Python异常处理try except

北战南征 提交于 2021-01-14 04:49:05
原文地址:https://www.cnblogs.com/init-life/p/9105546.html 异常处理try except 在Python中,异常处理,主要是try except语句,通常语法格式如下. try: 代码块1 except Exception as e: print(e) 代码2 try语句按照如下方式工作; 首先,执行try子句(在关键字try和关键字except之间的语句) 如果没有异常发生,忽略except子句,try子句执行后结束。 如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。 如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。 一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。 处理程序将只针对对应的try子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。 我们来看个简单的例子 a=10 b = 0 c =a/ b print (c) print("done") 运行一下,结果如下: c=a/ b ZeroDivisionError: division by zero

Django 学习之Rest Framework 视图相关

烈酒焚心 提交于 2021-01-14 04:26:57
drf除了在数据序列化部分简写代码以外,还在视图中提供了简写操作。所以在django原有的django.views.View类基础上,drf封装了多个子类出来提供给我们使用。 Django REST framwork 提供的视图的主要作用: 控制序列化器的执行(检验、保存、转换数据) 控制数据库查询的执行 调用请求类和响应类 [ 这两个类也是由 drf 帮我们再次扩展了一些功能类。 在接下来的例子中我们将是在上一篇: Django Rest Framework_ 序列化器 _Serializer 继续引用其数据库数据已经模型,为了方便我们学习,所以先创建一个子应用req,并注册配置: python manage.py startapp req 一 .视图 请求与响应 1.Request REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了HttpRequest类的Request类的对象。 REST framework 提供了Parser解析器,在接收到请求后会自动根据Content-Type指明的请求数据类型(如JSON、表单等)将请求数据进行parse解析,解析为类字典[QueryDict]对象保存到Request对象中。 Request

Django序列化&django REST framework

百般思念 提交于 2021-01-14 04:03:21
第一章、Django序列化操作 1.django的view实现商品列表页 ( 基于View类 ) # 通过json来序列化,但手写字典key代码量较大,容易出错;还有遇到时间,图片序列化会报错 from goods.base_views import Goodslistview url(r ' ^goods/$ ' ,Goodslistview.as_view(),name= ' goods_list ' ), urls.py from datetime import datetime from django.db import models from DjangoUeditor.models import UEditorField class Goods(models.Model): """ 商品 """ category = models.ForeignKey(GoodsCategory, verbose_name= " 商品类目 " ) goods_sn = models.CharField(max_length=50, default= "" , verbose_name= " 商品唯一货号 " ) name = models.CharField(max_length=100, verbose_name= " 商品名 " ) click_num = models

MTK Android Driver:GPIO

↘锁芯ラ 提交于 2021-01-14 03:09:21
5057 1.各列参数说明: 1.1.Def.Mode: 表示开机后gpio模块初始化后的模式,每个GPIO pin最多有7种模式,MODE0总是为GPIO mode。 GPIO在系统初始化后的mode是由Def.Mode这一栏决定的。 1.2.M0--M7:M0-M1-M3-M4-M5-M6-M7各个GPIO的可选的模式。 如果勾选了M0-M7中的某些项,则会生成类似 #define GPIO_UART_UTXD4_PIN_M_GPIO GPIO_MODE_00, 这样的宏定义,在code中可以直接使用 。 1.3.InPull En:表示enable Internal pull 还是disable Internal pull。 (Only valid when GPIO is input mode) 1.4.InPull SelHigh:表示是否需要拉高(上拉)。 (Only valid when GPIO is input mode and "InPull En" is enable) 1.5.Def.Dir:表示开机后gpio模块初始化后的GPIO的输入输出方向配置。 备注: 1)是否enable internal pull 取决于连接到这个GPIO pin脚的外围设备 2)如果为enable internal pull ,则可以配置成 pull-up or pull

异步:asyncio和aiohttp的一些应用(1)

好久不见. 提交于 2021-01-14 02:07:41
1. asyncio 1.1asyncio/await 用法 async/await 是 python3.5中新加入的特性, 将异步从原来的yield 写法中解放出来,变得更加直观。 在3.5之前,如果想要使用异步,主要使用yield语法。举例如下: import asyncio @asyncio.coroutine # 修饰符,等同于 asyncio.coroutine(hello()) def hello(): print ( ' Hello world! (%s) ' % threading.currentThread()) yield from asyncio.sleep(1) # 执行到这一步以后,直接切换到下一个任务,等到一秒后再切回来 print ( ' Hello again! (%s) ' % threading.currentThread()) loop = asyncio.get_event_loop() tasks = [hello(), hello()] loop.run_until_complete(asyncio.wait(tasks)) loop.close() 引入了async/await以后,hello()可以写成这样: async def hello(): print ( " Hello world! " ) r = await asyncio

asyncio和aiohttp

最后都变了- 提交于 2021-01-14 00:34:51
asynci o官网 https://docs.python.org/zh-cn/3/library/asyncio-task.html 下面为伪代码: import aiohttp import asyncio from bs4 import BeautifulSoup import pandas as pd # 将数据存入 li = []或数据库 #获取页面 li = [] async def fetch(url,session): async with session. get (url) as response: return await response.text # 解析网页 async def parse(html): soup = BeautifulSoup(html, ' lxml ' ) # 获取网页中的畅销书 book_list =soup.find( ' ul ' ,class_= ' book_list ' )( ' li ' ) for book in book_list: info =book.find_all( ' div ' ) # 获取每本畅销书的排名,名称,评论数,作者,出版社 rank = info[ 0 ].text[ 0 :- 1 ] name = info[ 2 ].text comments = info[ 3 ].text

基于selenium爬取拉勾网职位信息

杀马特。学长 韩版系。学妹 提交于 2021-01-13 23:01:30
1.selenium   Selenium 本 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。而这一特性为爬虫开发提供了一个选择及方向,由于其本身依赖于浏览器,所以使用Python的selenium库的前提是:需要下载相应的浏览器驱动程序,这里附上Chromedriver的下载地址: chromedriver ;(64位的向下兼容,) 2.code:   说明:      1 .多线程爬取(producer&consumer modal);      2 .结果集的存取文件类型为csv格式;      3. 大三党一枚,代码噪点多提出来哦,相互学习。 # coding:utf-8 from selenium import webdriver from lxml import etree import csv import time import re import threading import queue from selenium.webdriver.common.by import By import random POSITIONS_INFO = queue.Queue() event = threading.Event() def write_to_csv(file): with open(file, ' a '

拉勾网职位信息爬取

梦想的初衷 提交于 2021-01-13 22:12:42
学习python网络爬虫有一段时间了,正好赶上休假闲来无事,记录一下爬取的过程。 一、开发工具 Pycharm 2017 Python 2.7.10 requests pymongo 二、爬取目标 1、爬取与python相关的职位信息 2、由于拉勾网只展示30页的搜索结果,每页15条职位信息,全部爬下来,最终将获取到450条信息 3、将结果存储在Mongodb中 三、结果展示 四、爬取过程 1、浏览器中打开拉勾网:https://www.lagou.com,搜索python,同时打开开发者工具进行抓包,找到能够返回数据的Request URL,通过一番查找,发现要找的url是https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false&isSchoolJob=0,它返回的是json格式的数据: 经过以上分析,可以写一下初始化的代码:设置请求的url和请求头,请求头在抓包时可以获取,通过程序去爬取网络,我们要做的一件重要的事情就是模拟浏览器,否则遇到具有反爬虫措施的网站,很难将数据爬下来。当然了,设置正确的请求头,只是应对反爬虫的一部分措施。 1 def __init__ (self): 2 self.headers = {} 3 self.headers[ ' User-Agent ' ] = '

2020-11-29:手写代码:堆排序。

你。 提交于 2021-01-13 22:02:13
福哥答案2020-11-29: 1,先让整个数组都变成大根堆结构,建立堆的过程: 1)从上到下的方法,时间复杂度为O(N*logN)。 2)从下到上的方法,时间复杂度为O(N)。 2,把堆的最大值和堆末尾的值交换,然后减少堆的大小之后,再去调整堆,一直周而复始,时间复杂度为O(N*logN)。 3,堆的大小减小成0之后,排序完成。 golang代码如下: package class04 import ( "fmt" "testing" ) /* 堆排序 1,先让整个数组都变成大根堆结构,建立堆的过程: 1)从上到下的方法,时间复杂度为O(N*logN) 2)从下到上的方法,时间复杂度为O(N) 2,把堆的最大值和堆末尾的值交换,然后减少堆的大小之后,再去调整堆,一直周而复始,时间复杂度为O(N*logN) 3,堆的大小减小成0之后,排序完成 与堆有关的题目 已知一个几乎有序的数组。几乎有序是指,如果把数组排好顺序的话,每个元素移动的距离一定不超过k,并且k相对于数组长度来说是比较小的。 请选择一个合适的排序策略,对这个数组进行排序。 */ //go test -v -test.run TestHeapSort func TestHeapSort (t *testing.T) { fmt.Println( "----------------------" ) if true {

TensorFlow C++接口编译和使用

风流意气都作罢 提交于 2021-01-13 20:01:55
部分内容from: Tensorflow C++ 从训练到部署(1):环境搭建 在之前的编译中,已经编译好了tensorflow_pkg相关的wheel。现在有一个需求,需要按照C++的代码进行模型加载和训练。查询资料后发现,需要重新编译一套TensorFlow支持的C++接口,主要是编译出来libtensorflow_cc.so和libtensorflow_framework.so这两个文件。 bazel build -c opt --copt=-mavx --copt=-msse4.2 --config=monolithic // tensorflow:libtensorflow_cc.so bazel build -c opt --copt=-mavx --copt=-msse4.2 --config=monolithic // tensorflow:libtensorflow_framework.so 像这种严格与机器相关的选项,虽然可以加快执行速度,但是在使用之前一定要查明自己的目标机器是否适合。 中间可能会遇到之前的一些问题,功查找https://www.cnblogs.com/jourluohua/p/9180709.html 编译完成后,安装第三方库 source tensorflow/contrib/makefile/build_all_linux. sh 若出现