摘要: 读取excel:Pandas库read_excel()参数详解 pandas.read_excel(io,sheet_name = 0,header = 0,names = None,index_col = None,usecols = None,squeeze = False,dtype = No 阅读全文
posted @ 2019-12-06 15:03 脱离低级趣味 阅读(4414) 评论(0) 推荐(0) 编辑
摘要: zip函数的原型为:zip([iterable, …]) 参数iterable为可迭代的对象,并且可以有多个参数。该函数返回一个以元组为元素的列表,其中第 i 个元组包含每个参数序列的第 i 个元素。返回的列表长度被截断为最短的参数序列的长度。只有一个序列参数时,它返回一个1元组的列表。没有参数时, 阅读全文
posted @ 2019-10-30 17:27 脱离低级趣味 阅读(2116) 评论(0) 推荐(1) 编辑
摘要: 一、修改my.ini配置文件(mysql配置文件) character_set_server = utf8 #设置字符集 重启mysql数据库服务 查看当前数据库字符集 show VARIABLES like 'character%'; 二、修改数据库字符集 alter database 数据库名 阅读全文
posted @ 2019-10-24 17:07 脱离低级趣味 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 函数 字符串全半角之间的转换 ASC将全角英文字母转换为半角英文字母,其语法是ASC(text) WIDECHAR()将半角英文字母转换为全角英文字母,语法是=WIDECHAR(text) find(要查询的字符串, 从源字符串的第几个开始查找, 从元字符的第几个字符串开始查找) 函数用于查找字符串 阅读全文
posted @ 2019-10-24 11:37 脱离低级趣味 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 在JS中两个对象不能用“==” 或者“ ” 来比较,如果硬是要比较的话,始终返回的是false charCodeAt(): 返回字符串中指定索引的字符 unicode 编码:相当于python的ord()方法。 阅读全文
posted @ 2019-08-09 18:09 脱离低级趣味 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 假如:css 选择其中如果div元素下面有子节点a 和孙节点 imag 1: 如果要选择imga 可以用('div imag') 但是不能用('div > imag') 这其中‘ ’ 和 ‘>'的区别就是 ‘ ’是选择其所有的后辈节点,但是‘>’只是选择儿子节点。 2:选择div下面的第二个a标签可 阅读全文
posted @ 2019-05-04 20:12 脱离低级趣味 阅读(281) 评论(0) 推荐(0) 编辑
摘要: __new__与__init__的理解 __new__()方法是在创建实例之前被调用的,它的作用是创建一个实例,然后返回该实例对象,它是一个静态方法。 __init__() 当实例被创建完成之后被调用的,然后设置对象属性的一些初始值,是一个实例方法。 也即:__new__先被调用,__init__后 阅读全文
posted @ 2019-05-04 20:12 脱离低级趣味 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 命令行输入:scrapy genspider --list 可以看到scrapy给我们提供的爬虫模板: basiccrawlcsvfeedxmlfeed 一般都是用默认模板生成的spider,如果需要选择模本可以用命令: scrapy genspider -t crawl .... 关于pachar 阅读全文
posted @ 2019-05-04 20:11 脱离低级趣味 阅读(242) 评论(0) 推荐(0) 编辑
摘要: fake-useragent请求知乎的坑 在用scrapy爬取知乎的时候,用fake-useragent模块随机添加请求头的时候发现知乎跳转到一个提示浏览器版本过低的网页。 我百思不得其解,自己思考如下:综合1、3,说明fake-useragent应该没问题的,综合3、4我怀疑这是知乎使用的一种反爬 阅读全文
posted @ 2019-05-04 20:10 脱离低级趣味 阅读(1169) 评论(0) 推荐(0) 编辑
摘要: 在用到itemloader时,既可以通过在item中定义一些函数,作为input_processor()的参数对提取的数据进行修改,也可以直接在提取的字段后面加入自己的正则表达式提取数据。如上图中的re语句。 阅读全文
posted @ 2019-05-04 20:06 脱离低级趣味 阅读(302) 评论(0) 推荐(0) 编辑
摘要: FormRequest FormRequest类是专门用来处理HTML表单的,同时对隐藏的表单处理也很方便。适合用来完成登录操作。 类原型:class scrapy.http.FormRequest(url[, formdata, ...])其构造参数formdata可以是字典形式,也可以是(key 阅读全文
posted @ 2019-05-04 20:04 脱离低级趣味 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 当用Queue进行通信的时候,如果put进queue的时候有延迟,而get方法一直在运行的时候,如果用了while queue.qsize()!=0:来运行get则可能会出现put还没来得及进入,get就已经去Queue中取数据,所以queue.qsize()==0,导致退出循环了,这样后面再put 阅读全文
posted @ 2019-05-04 20:03 脱离低级趣味 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 创建一个线程池: Future对象的理解: 在我们创建submit()的时候会立即返回一个future对象,这个对象可能是没有完成的,但是会在将来某个时候完成,所以它是一个未来对象,或者叫做task的返回容器,保存task的执行状态及执行结果。(注意future与task的区别) 看submit() 阅读全文
posted @ 2019-05-04 20:02 脱离低级趣味 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 回车和换行的历史: 机械打字机有回车和换行两个键作用分别是: 换行就是把滚筒卷一格,不改变水平位置。 (即移到下一行,但不是行首,而是和上一行水平位置一样) 回车就是把水平位置复位,不卷动滚筒。 (即将光标移到行首,但是不会移到下一行,如果继续输入的话会覆盖掉前面的内容) Enter = 回车+换行 阅读全文
posted @ 2019-05-04 20:02 脱离低级趣味 阅读(20558) 评论(0) 推荐(2) 编辑
摘要: OSI七层模型 七层网络结构: 应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 一般也作五层 应用层、传输层、网络层、数据链路层、物理层(实体层) TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。关于TCP/IP和HTTP协议的关 阅读全文
posted @ 2019-05-04 20:00 脱离低级趣味 阅读(555) 评论(2) 推荐(0) 编辑
摘要: 先理解几个问题: (1)为什么读取文件的时候,需要用户进程通过系统调用内核完成(系统不能自己调用内核)什么是用户态和内核态?为什么要区分内核态和用户态呢? 在 CPU 的所有指令中,有些指令是非常危险的,如果错用,将导致系统崩溃,比如清内存、设置时钟等。如果允许所有的程序都可以使用这些指令,那么系统 阅读全文
posted @ 2019-04-01 14:25 脱离低级趣味 阅读(337) 评论(0) 推荐(0) 编辑
摘要: 并发 在一个时间段内,有几个程序在同一个cpu上面运行,但是任意时刻只有一个程序在cup上运行。(一个cpu在一个时间点上只能运行一个程序,因为cpu的运算速度非常快,可达上亿次每秒,如在一秒内可以切换100个进程时,但是因为我们感觉不出cpu的切换,所以错觉是几个程序在同时运行的) 并行 指的是在 阅读全文
posted @ 2019-03-31 17:54 脱离低级趣味 阅读(184) 评论(0) 推荐(0) 编辑
摘要: random.random() 没有参数,选择0到1之间的随机浮点数 random.uniform(a, b) 生成指定范围内的随机浮点数如果a、b哪个大那个小都没关系,生成的都是在小的与大的之间的随机浮点。 random.randint(a, b) 用于生成指定范围内的整数,参数上限a比如小于b, 阅读全文
posted @ 2019-03-30 09:13 脱离低级趣味 阅读(2263) 评论(0) 推荐(0) 编辑
摘要: 当函数内部引用一个全局变量时,如果此全局变量为可变类型,那么函数内部是可以改变此全局变量的值,用不用globale申明全局变量都一样。但是如果想给此变量重新赋值则必须要使用global。 当函数内部引用一个全局变量时,如果此全局变量为不可变类型,那么如果要能够在函数内部改变全局变量的值,就需要用gl 阅读全文
posted @ 2019-03-30 08:38 脱离低级趣味 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2019-03-29 12:20 脱离低级趣味 阅读(2620) 评论(0) 推荐(0) 编辑
摘要: 读文件 程序输出: ['1', '2']['3', 'a']['4', 'b'] 写文件 注意用csv的默认写入时候,写完一行会自动空行后再写入,但添加中间的参数 newline='' 表示写完一行接着写第二行,中间不空行。同时参数‘r’,‘w’表示读取的字符,‘rb’, 'wb'表示读写的字节 c 阅读全文
posted @ 2019-03-26 22:06 脱离低级趣味 阅读(1505) 评论(0) 推荐(1) 编辑
摘要: 协程 在python3.5以前,写成的实现都是通过生成器的yield from原理实现的, 这样实现的缺点是代码看起来会很乱,于是3.5版本之后python实现了原生的协程,并且引入了async和await两个关键字用于支持协程。于是在用async定义的协程与python的生成器彻底分开。 可以看到 阅读全文
posted @ 2019-03-04 10:57 脱离低级趣味 阅读(1388) 评论(0) 推荐(0) 编辑
摘要: 相关概念 相关概念 并发:指一个时间段内,有几个程序在同一个cpu上运行,但是任意时刻只有一个程序在cpu上运行。比如说在一秒内cpu切换了100个进程,就可以认为cpu的并发是100。 并行:值任意时刻点上,有多个程序同时运行在cpu上,可以理解为多个cpu,每个cpu独立运行自己程序,互不干扰。 阅读全文
posted @ 2019-03-03 18:50 脱离低级趣味 阅读(8263) 评论(0) 推荐(1) 编辑
摘要: 生成器对象是一个迭代器。但是它比迭代器对象多了一些方法,它们包括send方法,throw方法和close方法。这些方法,主要是用于外部与生成器对象的交互。本文先介绍send方法。 send send方法有一个参数,该参数指定的是上一次被挂起的yield语句的返回值。这样说起来比较抽象,看下面的例子。 阅读全文
posted @ 2019-03-03 16:01 脱离低级趣味 阅读(987) 评论(0) 推荐(0) 编辑
摘要: 进程运行时候变量是隔离的,线程间共享全局变量。 进程: 线程: 进程与线程的Queue 线程用的消息队列 from queue import Queue 进程用的消息队列 from multiprocessing import Queue 进程池用的消息队列(不能用from multiprocess 阅读全文
posted @ 2019-03-02 20:55 脱离低级趣味 阅读(346) 评论(0) 推荐(0) 编辑
摘要: GIL 全称global interpreter lock 全局解释锁 gil使得python同一个时刻只有一个线程在一个cpu上执行字节码,并且无法将多个线程映射到多个cpu上,即不能发挥多个cpu的优势。 gil会根据执行的字节码行数以及时间片释放gil,也会在遇到IO操作时候主动释放。 线程 阅读全文
posted @ 2019-03-01 23:59 脱离低级趣味 阅读(2139) 评论(0) 推荐(1) 编辑
摘要: python中函数调用的实质原理: python中函数调用的实质原理: python解释器(即python.exe)其实是用C语言编写的, 在执行python代码时,实际上是在用一个叫做Pyeval_EvalFramEx(C语言的函数)去执行代码中的函数,(实际上python中的程序实际上是运行在C 阅读全文
posted @ 2019-03-01 20:44 脱离低级趣味 阅读(595) 评论(0) 推荐(0) 编辑
摘要: 属性描述符可以用来控制给属性赋值的时候的一些行为 此代码中自定义的IntField类就是属性描述符类,属性描述根据其实现的魔法方法分为数据描述符和非数据描述符,两者的优先级别不一样。如果定义了属性描述符,那么在下面的类中定义属性的时候,如果属性是属性描述符的实例,那么再给属性赋值的时候就会先调用属性 阅读全文
posted @ 2019-03-01 11:00 脱离低级趣味 阅读(397) 评论(0) 推荐(0) 编辑
摘要: 考察 Student 类: 当我们想要修改一个 Student 的 scroe 属性时,可以这么写: 但是也可以这么写: 显然,直接给属性赋值无法检查分数的有效性。 如果利用两个方法: 这样一来,s.set_score(1000) 就会报错。 这种使用 get/set 方法来封装对一个属性的访问在许 阅读全文
posted @ 2019-03-01 10:19 脱离低级趣味 阅读(225) 评论(0) 推荐(0) 编辑
摘要: python中的垃圾回收采用计数算法 一个对象如果被引用N次,则需要N次(即计算引用次数为零时)执行del 才能回收此对象。 在函数和类中如果传递参数的时候,很有可能参数会做一些改变,一下为一个经典的坑: 代码解释:在因为com2没有指定list参数于是调用的默认参数。默认参数可以用print(Co 阅读全文
posted @ 2019-02-28 21:25 脱离低级趣味 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 变量的存储 a = 'abc' 理解:①先在内存中生成一个字符串‘abc’ ②可以把比变量名a看做一个便利贴,然后将a贴到‘abc’中 ③注意顺序,是生成‘abc’,然后再创建a指向‘abc’ python的is 和==的区别 is用来判断两个对象的ID是否一样 上述代码中之所以a == b成立,是 阅读全文
posted @ 2019-02-28 17:42 脱离低级趣味 阅读(773) 评论(0) 推荐(0) 编辑
摘要: 在python的dict中间进行查找某个key操作时,查找所需时间不会随着dict中键值对数量增多而变长,(时间复杂度为O(1))但是list中就会(时间复杂度为O(N)),这是因为list查询实现的方式是循环遍历所有列表,然后查找对应的元素,所以列表中元素越多,查找越费时间,但是同一个dict中的 阅读全文
posted @ 2019-02-28 16:47 脱离低级趣味 阅读(4137) 评论(0) 推荐(0) 编辑
摘要: 列表推导式 含义:通过一行代码生成列表,列表生成式性能高于列表操作。如果代码逻辑不复杂情况下可以优先使用列表生成式。 提取1-21之间的偶数 a = [x for x in range(21) if x%2==0] 生成器表达式 a = (x for x in range(21) if x%2==0 阅读全文
posted @ 2019-02-28 11:38 脱离低级趣味 阅读(281) 评论(0) 推荐(0) 编辑
摘要: bisect.insort(序列,元素)用于向序列中添加元素,并实现序列中元素的自动排序。 bisect.bisect(序列, 元素) 用于做查找,即如果插入元素,返回该元素应该插入的位置。如果元素相等,默认插入相等元素的右边,如果想要插入相当元素的左边,可用bisect.bisect_left(序 阅读全文
posted @ 2019-02-28 10:59 脱离低级趣味 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 创建一个可切片类 最后一行做调试如下: 类中因为实现了__getitem__()方法,可以看到对类的实例group对象切片操作之后,返回list类型的sub_group(),但是如果想使得切片之后的对象的话还是一个Group()则需要更改__getitem__()如何更改呢?我们需要了解其参数ite 阅读全文
posted @ 2019-02-28 10:35 脱离低级趣味 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 注意一下代码: 关于最后结果为什不是2? 在except语句中是捕捉到了KeyError错误。return2,此时会将结果2压入到栈中,然后会继续执行finally语句,finally语句return4后继续压入到栈中,然后s的值为从栈中取出 的值,即为4而不是2,如果finally最后没有reut 阅读全文
posted @ 2019-02-27 21:47 脱离低级趣味 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 注意python的类对象与实例对象的区分 类对象与实例对象是相对的,例如:a=1,那么a就是int的一个实例对象,这里的a相对于int来说,a是实例对象,int是类对象。但是int同时又是type的实例,所以int相对于type来说,int又是实例对象,type是类对象。再深入,type本身又是自己 阅读全文
posted @ 2019-02-27 14:06 脱离低级趣味 阅读(550) 评论(0) 推荐(0) 编辑
摘要: python中定义的以__开头和结尾的的函数。可以随意定制类的特性。魔法函数定义好之后一般不需要我们自己去调用,而是解释器会自动帮我们调用。 __getitem__(self, item) 将类编程一个可迭代的对象。对象元素为item内的元素。 __len__(self,) 返回类的长度(如果没有改 阅读全文
posted @ 2019-02-27 14:05 脱离低级趣味 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 概念 概念I/O系统,英文全称为“Input output system”,中文全称为“输入输出系统”,由输入输出控制系统和外围设备两部分组成,是计算机系统的重要组成部分。在计算机系统中,通常把处理器和主存储器之外的部分称为输入输出系统。针对不同的操作对象,可以划分为磁盘I/O模型,网络I/O模型, 阅读全文
posted @ 2019-02-26 22:58 脱离低级趣味 阅读(1288) 评论(0) 推荐(0) 编辑
摘要: 常常听到有程序员会跟你讨论:“我们在读写文件的时候,系统是有缓存的”。但实际上有一部分人把用户进程缓存区和系统空间缓存区的概念混淆了,包括这两种缓冲区的用法和所要解决的问题,还有其它类似的概念。本文就来区分一下不同的缓冲区概念(主要针对类unix平台)。 用户进程和操作系统的关系,首先我用一张图来解 阅读全文
posted @ 2019-02-26 22:19 脱离低级趣味 阅读(7071) 评论(3) 推荐(9) 编辑