备注:
知识整理:整理python相关知识,包括不限于python基础的关键字。随着我的学习步伐,会同步更新更多的东西
作用:打破循环
示例:
while True:
print("1")
break
作用:类,用于面向对象编程
示例:
class Employee:
'所有员工的基类'
empCount = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1
def displayCount(self):
print "Total Employee %d" % Employee.empCount
def displayEmployee(self):
print "Name : ", self.name, ", Salary: ", self.salary
作用:打破本次循环
示例:
while True:
for i in range(10):
if i >2:
print("1")
continue
break
作用:定义函数
示例:
def func():
print("abc")
func1 = func()
作用:字典,key+value的容器,类似于簇
示例:
dict1 = {'1':1,'2':2,'3':3}
示例:
for i in range(10):
print(i)
示例:
if a=1:
print("1")
elif a=2:
print("2")
else:
print("0")
作用:引入模块,即引入其他的程序
示例:
import time
time.time
argparse
作用:获取外部输入参数的模块。用于处理 Python 命令行参数和选项,程序定义好所需参数后,该模块会通过 sys.argv 解析出那些参数;除此之外,argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
示例:
import argparse
parser = argparse.ArgumentParser() # 创建解析对象
parser.parse_args() # 解析
作用:用于解析HTML信息
示例:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc,"html.parser")
将数据转换成指定格式,方便解析HTML
示例:
import requests
from bs4 import BeautifulSoup
url = "https://movie.douban.com/"
headers = {
"user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36"
}
# 3、解析信息
soup = BeautifulSoup(requests.get(url,headers=headers).content,"html.parser")
查找第一个目标string。同等与Soup.tageName。
还可以进行属性定位,用法为soup.find(tageName,属性=属性名)。
import requests
from bs4 import BeautifulSoup
soup = BeautifulSoup(open(‘123.html’),"lxml")
list1 = soup.find('div',class_='index-left') # ‘div’为目标标签,class_='index-left为目标属性名
print(list1)
查找所有目标string。
进行属性定位,查找所有目标属性数据,用法为soup.find_all(tageName,属性=属性名)。
import requests
from bs4 import BeautifulSoup
soup = BeautifulSoup(open(‘123.html’),"lxml")
list1 = soup.find_all('div',class_='index-left') # ‘div’为目标标签,class_='index-left为目标属性名
print(list1)
list2 = soup.find_all(‘img’)
print(list2)
选择标签,可通过’>’方式查找指定标签目录下的数据;空格表示多个层级。
from bs4 import BeautifulSoup
soup = BeautifulSoup(open(‘123.html’),"lxml")
list1 = soup.select('.high-quality-list > ul > li > a > img')[0] # 选则路径:.high-quality-list类-->ul标签-->li-->a-->img
list1 = soup.select('.high-quality-list > ul a') # 空格表示多个层级
获取标签内的文本
from bs4 import BeautifulSoup
soup = BeautifulSoup(open(‘123.html’),"lxml")
list1 = soup.select('.high-quality-list > ul > li > a > img')[0].get_text() # 选则路径:.high-quality-list类-->ul标签-->li-->a-->img
查找第一个标签内数据,tageName为目标标签名。
from bs4 import BeautifulSoup
soup = BeautifulSoup(open(‘123.html’),"lxml")
list1 = soup.li
print(f"找到了{len(list1)}个数据")
print(list1)
作用:用于引用BeautifulSoup 库(需要终端输入安装:pip install bs4 或pip3 install bs4)
作用:用于进行哈希操作
示例:
import hashlib
sha256_hash = hashlib.new('sha256')
sha256_hash.update(b'RUNOOB')
print(sha256_hash.hexdigest())
作用:用于操作Json文件
示例:
import json
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
data2 = json.dumps(data)
print(data2)
Jython 程序可以和 Java 无缝集成。除了一些标准模块,Jython 使用 Java 的模块。Jython 几乎拥有标准的Python 中不依赖于 C 语言的全部模块。比如,Jython 的用户界面将使用 Swing,AWT或者 SWT。Jython 可以被动态或静态地编译成 Java 字节码。
用于解析html文本,需要安装pip install xlml
操作数据库
示例:
import MySQLdb #引入mysql模块
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 如果数据表已经存在使用 execute() 方法删除表。
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
cursor.execute(sql)
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
LAST_NAME, AGE, SEX, INCOME) \
VALUES (%s, %s, %s, %s, %s )" % \
('Mac', 'Mohan', 20, 'M', 2000)
try:
# 执行sql语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 发生错误时回滚
db.rollback()
sql = "SELECT * FROM EMPLOYEE \
WHERE INCOME > %s" % (1000)
try:
# 执行SQL语句
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4]
# 打印结果
print "fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \
(fname, lname, age, sex, income )
except:
print "Error: unable to fetch data"
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
try:
# 执行SQL语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 发生错误时回滚
db.rollback()
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:
# 执行SQL语句
cursor.execute(sql)
# 提交修改
db.commit()
except:
# 发生错误时回滚
db.rollback()
db.close()
用于操作EXCEL文件(需要在终端输入安装:pip install openpyxl 或者pip3 install openpyxl)
作用:用于比较的函数
示例:
import operator
# 数字
x = 10
y = 20
print("x:",x, ", y:",y)
print("operator.lt(x,y): ", operator.lt(x,y))
作用:操作文件
import os
# 重命名文件test1.txt到test2.txt。
os.rename( "test1.txt", "test2.txt" )
fo = open("foo.txt", "w")
print "文件名: ", fo.name
fo.close
关闭文件
读取文件
删除文件
重命名文件
当前文件位置
写入文件
打开文件
改变当前目录
表示用户的环境变量,用于获取和设置环境变量
显示当前工作目录
在当前目录创建新的目录
删除目录
作用:用于创建可视化图标
示例:
from pyecharts.charts import Bar
# 准备数据
x_data = ['一月', '二月', '三月', '四月', '五月']
y_data = [10, 20, 15, 25, 30]
# 创建柱状图
bar_chart = Bar()
bar_chart.add_xaxis(x_data)
bar_chart.add_yaxis("销售额", y_data)
# 也可以传入路径参数,如 bar_chart.render("bar_chart.html")
bar_chart.render()
作用:正则表达式
示例:
import re
print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配
缺省表达式,用于忽略中间内容。一般搭配re.findall使用
生成正则表达式的对象
import re
pattern = re.compile(r'\d+') # 用于匹配至少一个数字
m = pattern.match('one12twothree34four') # 查找头部,没有匹配
查找所有对象
import re
str1 = '
ex = '
img_src_list = re.findall(ex,str1,flag = re.S)
作用:从起始位置匹配字符串
示例:
import re
print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配
查找字符串
import re
print(re.search('www', 'www.runoob.com').span()) # 在起始位置匹配
分割字符串
import re
re.split('o', 'hello world')
替换字符串
import re
phone = "2004-959-559 # 这是一个国外电话号码"
# 删除字符串中的 Python注释
num = re.sub(r'#.*$', "", phone)
print "电话号码是: ", num
作用:用于HTTP通讯,抓取信息(需要在终端输入安装:pip install requests 或者pip3 install requests)
import requests
# 请求头,模拟浏览器向ul发送请求
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36"
}
data1 = requests.get("http://movie.douban.com",headers=headers)
print(data1.status_code) # 获取响应状态,200为ok
data = data1.text # 提取string数据
print(data)
200为正常读取;404为访问不存在;
import smtplib
from email.mime.text import MIMEText
from email.header import Header
sender = '[email protected]'
receivers = ['[email protected]'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
message['From'] = Header("菜鸟教程", 'utf-8') # 发送者
message['To'] = Header("测试", 'utf-8') # 接收者
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message.as_string())
print "邮件发送成功"
except smtplib.SMTPException:
print "Error: 无法发送邮件"
作用:用于进行TCP/IP通讯
示例:
import socket # 导入 socket 模块
s = socket.socket() # 创建 socket 对象
host = socket.gethostname() # 获取本地主机名
port = 12345 # 设置端口
s.bind((host, port)) # 绑定端口
s.listen(5) # 等待客户端连接
while True:
c,addr = s.accept() # 建立客户端连接
print '连接地址:', addr
c.send('欢迎访问菜鸟教程!')
c.close() # 关闭连接
作用:可以帮助我们分析和计算数据集的统计特征
创建子进程,可用于调用外部文件。
示例:
import subprocess
ret = subprocess(“serial_swap.py”,shell=true,cwd=”c:\iRobot”)
作用:实现多线程测试的模块
示例:
import thread
import time
# 为线程定义一个函数
def print_time( threadName, delay):
count = 0
while count < 5:
time.sleep(delay)
count += 1
print "%s: %s" % ( threadName, time.ctime(time.time()) )
# 创建两个线程
try:
thread.start_new_thread( print_time, ("Thread-1", 2, ) )
thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
print "Error: unable to start thread"
while 1:
pass
返回线程名。
返回线程是否活动的。
等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。
用以表示线程活动的方法。
设置线程名。
启动线程活动。
返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。
除了使用方法外,线程模块同样提供了Thread类来处理线程,Thread类提供了以下方法:
返回当前的线程变量。
返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
作用:Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
示例:
#from tkinter import *
root = Tk() # 创建窗口对象的背景色
# 创建两个列表
li = ['C','python','php','html','SQL','java']
movie = ['CSS','jQuery','Bootstrap']
listb = Listbox(root) # 创建两个列表组件
listb2 = Listbox(root)
for item in li: # 第一个小部件插入数据
listb.insert(0,item)
for item in movie: # 第二个小部件插入数据
listb2.insert(0,item)
listb.pack() # 将小部件放置到主窗口中
listb2.pack()
root.mainloop() # 进入消息循环
作用:获取日期和时间的模块
示例:
import time
print(time.time())
作用:用于向HTTP发送请求
示例:
import urllib.request #导入urllib库
url = urllib.request.urlopen("http://www.baidu.com") #需要抓取数据的网站
data = url.read()
dt1 = open("2.html","wb") # 生成html文件,使用了相对路径
# dt1 = open("2.xls","wb") # 生成xls文件,使用了相对路径
dt1.write(data) #将数据写入D:/Code/data/2.xls表中
dt1.close()
print(data)
wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能健全的 GUI 用户界面。
作用:等待用户输入字符串
示例:
str = input(请输入:)
作用:等同于数组
list1 = [1,2,3]
作用:数字
作用:空语句,保持程序完整性
if True:
pass
作用:打印信息
示例:
print("abc")
运算符
+加、减-、乘*、除/、取余%、**幂、//取整除
作用:字符串
查找字符串是否存在
检测字符串是否存在在string内
"etqw"in s
连接字符串数组,形成字符串
"_".join(lst) # 以”_“连接字符串数组,形成字符串
计算string长度
len(s0)
查找字符串的索引位置
s0=”asdfhj”
s0.replace("a","g")
s1.split("_") # 以”_”字符切割字符串成数组
作用:1、返回函数的返回值;2、终⽌程序的运⾏,提前退出。
示例:
def mylen():
# 函数体 缩进代表包含意思
a='hello'
length=0
for i in a :
length+=1
# print(length)
return length
作用:异常处理
示例:
try:
fh = open("testfile", "w")
fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
print "Error: 没有找到文件或读取文件失败"
else:
print "内容写入文件成功"
fh.close()
finally:
print "Error: 没有找到文件或读取文件失败"
作用:元组,不可修改的数组
示例:
tup1=(1,2,3)
示例:
while True:
print("1")
break
->
作用:为函数添加元数据,描述函数返回的类型。
示例:
def add(x:int, y:int) ->bool:
if(x>y):
return True
else:
retur False
这里,表明了函数的参数传入为int类型,输出的类型为bool类型。
Python 标准库包含 SAX 解析器,SAX 用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。
将 XML 数据在内存中解析成一个树,通过对树的操作来操作XML。
ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。