[总章]python知识整理

[20240111]

备注:

知识整理:整理python相关知识,包括不限于python基础的关键字。随着我的学习步伐,会同步更新更多的东西

关键字

break

作用:打破循环

示例:

while True:

print("1")

break

class 类

作用:类,用于面向对象编程

示例:

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

continue

作用:打破本次循环

示例:

while True:

for i in range(10):

if i >2:

print("1")

continue

break

def 函数

作用:定义函数

示例:

def func():

print("abc")

func1 = func()

dictionary 字典

作用:字典,key+value的容器,类似于簇

示例:

dict1 = {'1':1,'2':2,'3':3}

for

示例:

for i in range(10):

print(i)

if

示例:

if a=1:

print("1")

elif a=2:

print("2")

else:

print("0")

import 模块引入

作用:引入模块,即引入其他的程序

示例:

import time

time.time

argparse

作用:获取外部输入参数的模块。用于处理 Python 命令行参数和选项,程序定义好所需参数后,该模块会通过 sys.argv 解析出那些参数;除此之外,argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。

示例:

import argparse

parser = argparse.ArgumentParser() # 创建解析对象

parser.parse_args() # 解析

BeautifulSoup bs4内HTML解析库

作用:用于解析HTML信息

示例:

from bs4 import BeautifulSoup   

soup = BeautifulSoup(html_doc,"html.parser")  

BeautifulSoup

将数据转换成指定格式,方便解析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")

Soup.find 查找第一个tageName

查找第一个目标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)

Soup.find().decompose 删除第一个string
Soup.find_all 查找所有tageName

查找所有目标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)

Soup.select() 选择tageName

选择标签,可通过’>’方式查找指定标签目录下的数据;空格表示多个层级。

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')    # 空格表示多个层级

Soup.select().get_text() 选择标签内的文本

获取标签内的文本

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

Soup. 查找标签

查找第一个标签内数据,tageName为目标标签名。

from bs4 import BeautifulSoup

soup = BeautifulSoup(open(‘123.html’),"lxml")

list1 =  soup.li

print(f"找到了{len(list1)}个数据")

print(list1)

bs4 HTML解析库

作用:用于引用BeautifulSoup 库(需要终端输入安装:pip install bs4 或pip3 install bs4)

hashlib 哈希操作

作用:用于进行哈希操作

示例:

import hashlib

sha256_hash = hashlib.new('sha256')

sha256_hash.update(b'RUNOOB')

print(sha256_hash.hexdigest())

json 操作Json文件

作用:用于操作Json文件

示例:

import json

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

data2 = json.dumps(data)

print(data2)

json.dumps Json数组编码
json.loads 解码Json数据

Jython Java开发GUI库

Jython 程序可以和 Java 无缝集成。除了一些标准模块,Jython 使用 Java 的模块。Jython 几乎拥有标准的Python 中不依赖于 C 语言的全部模块。比如,Jython 的用户界面将使用 Swing,AWT或者 SWT。Jython 可以被动态或静态地编译成 Java 字节码。

lxml html文本解析库

用于解析html文本,需要安装pip install xlml

MySQLdb 数据库操作

操作数据库

示例:

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语句 

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 查询语句 

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 更新语句 

sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')

try:

# 执行SQL语句

cursor.execute(sql)

# 提交到数据库执行

db.commit()

except:

# 发生错误时回滚

db.rollback()

# SQL 删除语句 

sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)

try:

# 执行SQL语句

cursor.execute(sql)

# 提交修改

db.commit()

except:

# 发生错误时回滚

db.rollback()

# 关闭数据库连接 

db.close()

openpyxl EXCEL操作

用于操作EXCEL文件(需要在终端输入安装:pip install openpyxl 或者pip3 install openpyxl)

operator 比较

作用:用于比较的函数

示例:

import operator

# 数字

x = 10

y = 20

print("x:",x, ", y:",y)

print("operator.lt(x,y): ", operator.lt(x,y))

os 文件操作

作用:操作文件

import os

# 重命名文件test1.txt到test2.txt。

os.rename( "test1.txt", "test2.txt" )

fo = open("foo.txt", "w")

print "文件名: ", fo.name

fo.close

f.close()

关闭文件

f.read()

读取文件

f.remove()

删除文件

f.rename()

重命名文件

f.tell()

当前文件位置

f.write()

写入文件

open()

打开文件

os.childir()

改变当前目录

os.environ

表示用户的环境变量,用于获取和设置环境变量

os.getcwd

显示当前工作目录

os.mkdir()

在当前目录创建新的目录

os.rmdir()

删除目录

pyecharts 图表模块

作用:用于创建可视化图标

示例:

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()

re 正则表达式

作用:正则表达式

示例:

import re

print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配

.*? 缺省表达式

缺省表达式,用于忽略中间内容。一般搭配re.findall使用

re.compile 查找头部

生成正则表达式的对象

import re

pattern = re.compile(r'\d+') # 用于匹配至少一个数字

m = pattern.match('one12twothree34four') # 查找头部,没有匹配

re.findall 查找所有

查找所有对象

import re

str1 = '

class="figure-size-222-295".*?'

ex = '

img_src_list = re.findall(ex,str1,flag = re.S)

re.match()

作用:从起始位置匹配字符串

示例:

import re

print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配

re.search()

查找字符串

import re

print(re.search('www', 'www.runoob.com').span()) # 在起始位置匹配

re.split()

分割字符串

import re

re.split('o', 'hello world')

re.sub()

替换字符串

import re

phone = "2004-959-559 # 这是一个国外电话号码"

# 删除字符串中的 Python注释

num = re.sub(r'#.*$', "", phone)

print "电话号码是: ", num

requests HTTP请求库

作用:用于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)

requests.get 爬取数据
requests.get().content 数据转换为二进制文本
requests.get().json 数据转换为对象
requests.get().text 数据转换为字符串文本
requests.get().status_code 获取请求状态

200为正常读取;404为访问不存在;

smtplib SMTP发送邮件

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: 无法发送邮件"

socket TCP/TP通讯

作用:用于进行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()                # 关闭连接

statistics 统计计算函数

作用:可以帮助我们分析和计算数据集的统计特征

subprocess 子进程

创建子进程,可用于调用外部文件。

示例:

import subprocess

ret = subprocess(serial_swap.py,shell=true,cwd=c:\iRobot)

thread 多线程

作用:实现多线程测试的模块

示例:

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

getName():

返回线程名。

isAlive():

返回线程是否活动的。

join([time]):

等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。

run():

用以表示线程活动的方法。

setName():

设置线程名。

start():

启动线程活动。

threading.activeCount():

返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。

除了使用方法外,线程模块同样提供了Thread类来处理线程,Thread类提供了以下方法:

threading.currentThread():

返回当前的线程变量。

threading.enumerate():

返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。

tkinter 标准GUI库

作用: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()                 # 进入消息循环

time 时间获取

作用:获取日期和时间的模块

示例:

import time

print(time.time())

urllib.requests HTTP请求库

作用:用于向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 开源GUI库

wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能健全的 GUI 用户界面。

input 等待用户输入

作用:等待用户输入字符串

示例:

str = input(请输入:)

list 列表

作用:等同于数组

list1 = [1,2,3]

number 数字

作用:数字

pass 空语句

作用:空语句,保持程序完整性

if True:

pass

print 打印文本

作用:打印信息

示例:

print("abc")

运算符

+加、减-、乘*、除/、取余%、**幂、//取整除

string 字符串

作用:字符串

s.find 查找

查找字符串是否存在

in 检测存在

检测字符串是否存在在string内

"etqw"in s

join 连接字符串

连接字符串数组,形成字符串

"_".join(lst) # 以”_“连接字符串数组,形成字符串

len 字符串长度

计算string长度

len(s0)

s.index 索引

查找字符串的索引位置

s.replace 替换字符串

s0=”asdfhj”

s0.replace("a","g")

s.split 分割字符串

s1.split("_") # 以”_”字符切割字符串成数组

return 返回值

作用:1、返回函数的返回值;2、终⽌程序的运⾏,提前退出。

示例:

def mylen():

    # 函数体 缩进代表包含意思

    a='hello'

    length=0

    for i in a :

        length+=1

    # print(length)

    return length

try 错误处理

作用:异常处理

示例:

try:

fh = open("testfile", "w")

fh.write("这是一个测试文件,用于测试异常!!")

except IOError:

print "Error: 没有找到文件或读取文件失败"

else:

print "内容写入文件成功"

fh.close()

finally:

print "Error: 没有找到文件或读取文件失败"

tuple 元组

作用:元组,不可修改的数组

示例:

tup1=(1,2,3)

while

示例:

while True:

print("1")

break

->

作用:为函数添加元数据,描述函数返回的类型。

示例:

def add(x:int, y:int) ->bool:

       if(x>y):

           return True

       else:

           retur False

这里,表明了函数的参数传入为int类型,输出的类型为bool类型。

xml 解析XML

SAX (simple API for XML )

Python 标准库包含 SAX 解析器,SAX 用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。

DOM(Document Object Model)

将 XML 数据在内存中解析成一个树,通过对树的操作来操作XML。

ElementTree(元素树)

ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。

你可能感兴趣的:(python,python,开发语言)