每日学习
文章平均质量分 80
Oyaji540
这个作者很懒,什么都没留下…
展开
-
Day027 - 线程池与进程池
线程池与进程池线程队列queue模块中的队列只能保存一般数据或者多线程中产生的数据,多用于多线程(自带线程安全)不能用来存储多进程中产生的数据队列数据结构:容器型先进先出if __name__ == '__main__': # 1. 队列基本用法 # 1.1 创建队列对象:Queue() q = Queue() # 1.2 添加数据(进):队列对象.put(数据) q.put(100) q.put(200) prin原创 2021-08-18 20:56:36 · 120 阅读 · 0 评论 -
Day026 - 多线程与多进程
多线程与多进程多线程from threading import Thread, current_thread创建子线程Thread(target=函数, args=元组)函数 - 需要在子线程中调用的函数元组 - 调用target对应的函数的时候传递的实参列表def download(name): start = datetime.datetime.now() print(f'{name}开始下载:{start}') print('当前原创 2021-08-18 20:56:03 · 113 阅读 · 0 评论 -
Day025 - Xpath与xml数据格式
Xml数据格式格式示例:json = { "name":"永辉超市", "address": "肖家河大厦", "goods": [ {"name": "泡面", "price":"3.5", "count": 20}, {"name": "矿泉水", "price":"2", "count": 15}, {"name": "面包", "price":"5", "count": 50} ]}xml:<superm原创 2021-08-16 20:07:43 · 147 阅读 · 0 评论 -
Day024 - selenium补充
seleniumselenium的前进与后退切换选项卡前进与后退from selenium.webdriver import Chromeimport time# web = Chrome()# web.get('https://www.baidu.com')# time.sleep(2)# web.get('https://www.runoob.com')# time.sleep(2)# web.get('https://movie.douban.com/top250')# tim原创 2021-08-13 22:30:55 · 118 阅读 · 0 评论 -
Day023 - requests代理与selenium
seleniumselenium基本用法from selenium.webdriver import Chrome, Edge创建浏览器对象web = Edge()输入网址web.get('https://www.gamersky.com')获取网页源代码web.page_source关闭浏览器web.close()常规交互from selenium.webdriver import Edgefrom selenium.webdriver.common.k原创 2021-08-12 20:57:38 · 114 阅读 · 0 评论 -
Day022 - requests与bs4
requestspython基于http协议进行网络请求的的三方库import requests发送请求requests.get(url, *, headers, params, proxies) - 发送get请求requests.post(url, *, headers, params, proxies) - 发送post请求参数:url - 请求地址(一个网站的网址、接口地址、图片地址等)headers - 设置请求头(设置cookie和U原创 2021-08-11 21:02:11 · 116 阅读 · 0 评论 -
Day021 - HTML基础
HTML网页的技术结构:HTML、CSS、JS(JavaScript)HTML(结构标准) - 提供网页内容(通过不同的标签提供不同的内容)CSS(样式标准) - 负责网页内容的样式和布局JS(行为标准) - 负责控制网页内容变化HTML(超文本标记语言)一个网页就是一个HTML,html代码一般写在可以被浏览器直接解析的html文件中基本结构:一个html标签里面包含一个head标签和一个body标签html标签 - 代表整个网页head标签 - 网页顶部负责显示网页图原创 2021-08-10 20:08:13 · 81 阅读 · 0 评论 -
Day020 - pdf合并与excel/csv读取写入
PDF文件操作导入三方库import PyPDF2读取操作以读的方式打开pdf文件获取pdf文件对象pdf1 = PyPDF2.PdfFileReader('被打开的pdf文件路径')获取pdf文件总页数total_page = pdf1.getNumPages()print(total_page)获取指定页面对象# pdf文件对象.getPage(页数)page1 = pdf1.getPage(1)旋转page1_1 = page1.rotateClo原创 2021-08-07 14:32:07 · 104 阅读 · 0 评论 -
Day019 - 邮件发送
邮件发送相关包import osimport smtplibfrom email.header import Headerfrom email.mime.image import MIMEImagefrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMEText连接与登录邮箱服务smtplib.SMTP_SSL(服务器地址, 邮箱服务福安口) - 连接邮箱服务器并且返回一个连接对象原创 2021-08-05 20:23:03 · 251 阅读 · 0 评论 -
Day009 - 字符串和字符
字符串和字符字符串定义容器型数据类型;将**’ ‘、" "、’’’ ‘’’、""" “”“作为容器标志(’’’ ‘’’、”"" “”"**换行可以不使用转义字符,可直接用回车);引号中的每个符号就是该字符串的元素;字符串不可变(不支持增删改);字符串有序(支持下标操作);元素:引号中的单独的每个符号都是字符串的元素(又叫字符),可以是任何符号;str1 = '900,100'str2 = '''abc123'''print(str2)空串str8 = '' # "" ""原创 2021-07-22 23:51:06 · 92 阅读 · 0 评论 -
Day008 - 字典与集合
字典(dict)字典元素的增删改元素的增加和修改字典[键] = 值当键存在的时候是修改键对应的值,当键不存在的时候是添加键对;例子cat = {'name': '美美', 'age': 2, 'color': '白色'}print(cat) # {'name': '美美', 'age': 2, 'color': '白色'}# 添加cat['breed'] = '蓝猫'print(cat) # {'name': '美美', 'age': 2, 'color': '白色', 'b原创 2021-07-22 00:10:10 · 73 阅读 · 0 评论 -
Day007 - 元组与字典
列表相关函数max、minmax(序列) - 求序列最大值min(序列) - 求序列最小值例子nums = [34, 89, 78]print(max(nums), min(nums)) # 89 34sumsum(数字序列) - 求数字序列中元素的和例子nums = [34, 89, 78]print(sum(nums)) # 201sort与sorted**sorted(序列) ** - 不修改原序列中元素的顺序而是产生一个新的排序列表;原创 2021-07-20 23:49:23 · 272 阅读 · 0 评论 -
Day004 - 循环
循环让代码重复执行(代码写一遍,运行的时候可以执行多次)while与for循环的选择for 循环:循环次数确定的时候使用while循环:循环次数不确定的时候使用(程序员在写代码的时候没有办法通过任何方式来确定循环次数)for循环语法for 变量 in 序列: 循环体说明for | in | : - 关键字,固定写法变量 - 写一个变量名(可以是已经定义过的,也可以没有定义过的);序列 - 容器型数据类型对应的数据,常见序列:字符串、列表、元组、字典、集合、迭原创 2021-07-15 23:09:36 · 70 阅读 · 1 评论 -
Day006 - 列表
切片常规用法语法列表[开始下标:结束下标:步长]说明:开始下标下标值(正索引与负索引都行,可混合使用);确定切片范围的起点,可以被取到,是闭区间操作;: - 固定写法结束下标下标值(正索引与负索引都行,可混合使用);确定切片范围的终点,不能被取到,是开区间操作;步长决定切片的方向;(步长对应的方向必须和开始到结束的方向一致,否则切片结果为空)获取元素的方式;(逐一获取还是跳跃获取)注:切片的有效范围是:[开始下标,结束下标)原创 2021-07-19 23:20:54 · 96 阅读 · 0 评论 -
Day005 - 循环练习与列表基础
列表基础前提概念容器 - 一个容器型数据可以同时保存多个其他的数据;元素 - 容器中每一个独立的数据;列表 - List列表时容器型数据类型(序列),[]作为容器的标志,里面的多个元素用逗号隔开;表示方式:[元素1,元素2,…,元素n]列表的特点列表是可变的(元素的个数,值和顺序可变) - 增、删、改、查;**列表是有序的 **- 支持下标操作;列表对元素没有要求,什么类型的数据都可以作为列表的元素;列表类型空列表 - list = []列表 - 可以原创 2021-07-17 16:27:22 · 97 阅读 · 0 评论 -
Day003 - Python运算符与分支结构
算术运算符符号+-*/%//**含义加减乘除求余数(取模)取整除幂运算常见算术运算符+(加)、-(减)、*(乘)、/(除)和数学中的对应运算功能一模一样;其他算术运算符% - 求余数、取模# x % y - 求x除以y的余数print(5 % 2,16 % 2)# 得到结果1,0判断一个数是否被另外一个数整除(看余数是否为0)if 27 % 3 == 0: print('27能被3整除')# 得到结果27能被3原创 2021-07-14 22:51:26 · 119 阅读 · 0 评论 -
Day011 - 函数基础
函数基础函数函数定义函数就是实现某一特定功能的代码的封装;(每个函数都有自己特定的功能)函数就是把实现某一个功能的所有代码打成一个包,每次需要这个功能的时候不用重复写实现这个功能的代码,而是使用函数。函数的分类按照函数是由谁创建/定义来进行的分类;系统函数 - 由python定义的函数,这类函数的使用只需要直接调用就行;自定义函数 - 由程序员自己创建自己使用的函数;定义(创建)函数语法def 函数名(形参列表): 函数说明文档 函数体说明def原创 2021-07-27 22:47:43 · 116 阅读 · 0 评论 -
Day018 - 面向对象进阶
对象属性的增删改查class Student: def __init__(self, stu_id, name, age=18): self.stu_id = stu_id self.name = name self.age = age # 在当前类的对象被打印的时候自动调用,并且将这个方法的返回值作为这类对象的返回结果 # 返回值必须是字符串 def __repr__(self): return f'<原创 2021-08-04 19:28:29 · 78 阅读 · 0 评论 -
Day017 - 面向对象基础
类和对象类 - 拥有相同功能,相同的属性的对象的集合(抽象概念)对象 - 对象是类的实例(具体的事物)创建类和对象创建类用代码描述清楚这个类是拥有哪些相同的功能(函数)和哪些相同属性(变量)的对象的集合。语法:class 类名: 类的说明文档 类的类容说明class | : - 关键字;固定写法类名程序员自己命名;要求:标识符、不是关键字;规范:见名知义,驼峰式命名,并且第一个字母大写;不适用系统的函数名、原创 2021-08-03 21:00:22 · 59 阅读 · 0 评论 -
Day016 - 正则表达式
正则表达式语法正则表达式是一个让字符串复杂文件变得简单的工具;主要是用正则符号描述相关字符串的规则;Python正则表示方式 - r’正则表达式’普通字符(普通符号)除了有特殊功能或者特殊意义以外的符号,普通字符在正则中表示这个符号本身;re_str = r'abc' # 匹配一个字符串,有三个字符,分别是是a、b和c;print(re.fullmatch(re_str, 'abc')) # <re.Match object; span=(0, 3),原创 2021-08-03 00:03:25 · 388 阅读 · 1 评论 -
Day014 - 常用系统模块
os模块常用函数os.getcwd() - 获取当前工作目录os.listdir(文件夹路径) - 获取指定文件夹所有文件的名称os.path.abspath(’./’) - 获取指定相对路径的绝对路径import osprint(os.getcwd())print(os.listdir('./'))print(os.path.abspath('./'))time模块时间戳指定时间到1970-01-01 00:00:00(格林威治时间)的时间差(单位:秒)来原创 2021-07-30 22:20:04 · 74 阅读 · 0 评论 -
Day013 - 迭代器生成器与模块
迭代器(iter)迭代器定义迭代器是容器型数据类型,可以同时保存多个数据;可以被遍历,也可以转换成列表和元组;打印迭代器的时候无法显示与打印里面的元素;迭代器不支持len操作;如果需要迭代器中的元素,必须将元素从迭代器取出,而且一旦取出元素,迭代器中的这个元素就不存在了;创建迭代器通过iter将其他序列转换成迭代器;创建生成器对象(生成器可以看成是一种特殊的迭代器);iter1 = iter('abc')print(iter1) # <str_iterator ob原创 2021-07-29 19:41:31 · 87 阅读 · 0 评论 -
Day012 - 函数进阶
匿名函数语法函数名 = lambda 参数列表: 返回值相当于def 函数名(参数列表): return 返回值注意匿名函数只能实现用一句代码就可以完成功能的函数匿名函数在调用的时候和普通函数没有区别匿名函数的参数不能使用冒号语法来说明类型sum1 = lambda num1, num2=10: num1 + num2print(sum1(10, 20)) # 30print(sum1(num1=100, num2=200)) # 300print(sum1原创 2021-07-28 20:52:08 · 85 阅读 · 0 评论 -
Day002 - Python基础语法及变量
Python注释在Python代码中不会被解释器执行,不影响程序功能的语句;注释的意义对代码进行解释和说明,增加程序的可读性,便于自己或者其他程序员进行解读、查错以及修改等;可让有效代码的功能消失,便于检查与验证代码的功能;注释的分类单行注释在Python中单行注释使用 # 开头,可单行添加也可在语句后添加;例如:# 单行注释print('Hello World!') # 语句后注释运行后控制台输出结果(运行结果不会显示注释内容):Hello World!单行原创 2021-07-13 20:59:07 · 201 阅读 · 0 评论