Skip to content

Python 笔记

基础语法

py
if 表达式:
    语句块
elif 表达式:
    语句块
else:
    语句块
for i in range(101):
    语句块
range(start,end,step),一个参数时为end
py除了break和continue外还有pass占位符

序列类型

py
序列
1.列表:(数组)
sname[start:end:step]#切片
value in sequence #判断序列成员
len() #序列长度
max() #最大值:
min() #最小值:
sum() #求和:
listname.sort(key=None,rever=False) #排序
list() #创建数值列表
del listname #删除列表
for item in listname: #遍历列表
for index,item in enumerate(listname):
listname.append(obj) #push元素
listname.extend(listname2) #concat列表
del listname[2],listname.remove(value) #删除元素
listname.count(obj) #元素出现次数
listname.index(obj) #indexof
列表推导式:
list = [Expression for var in range]
foreach:list = [Expression for var in list]
fliter:list = [Expression for var in condition]
随机数:random.randint(1,100)(random模块)
2.元组(有序,只读)
元组属于不可变序列(const版数组)
3.字典(无序)
dict(zip(key,value)) #创建字典
dict(key1=value1,key2=value2)
dict.fromkeys(list1) #创建键值为空的字段
dictname.get(key[,default]) #获取字典值
遍历字典:
for item in dictname.items()
for k,v in dictname.items()
字典添加元素不能用append()
字典推导式:
dictname={i:表达式 for range()}
4.集合(确定性、互异性、无序性)
setname.add(obj) #集合添加元素:
setname.pop() #pop:
setname.remove(obj) #删除指定:
setname.clear() #清空集合
5.字符串
字符串包括str(Unicode)和byte(二进制数据)类型
str.encode([encoding="utf-8"][,errors="strict"]) #str转byte
bytes.decode([encoding="utf-8"][,errors="strict"]) #byte转str
len(string) #计算字符串长度
string[start:end:step] #切片
str.replace("is", "was"); #字符串替换
str[start:] #取文本右边:
str.split(分隔符) #文本分割:
分隔符.join(list) #合并字符串
str.count(obj) #字符串出现次数
寻找文本:str.find(sub[,start][,end]) #没有返回-1
str.index(sub[,start][,end]) #没有会抛出异常
str.startswith(prefix[,start][,end]) #是否以prefix开头
str.endswith(suffix[,start][,end]) #是否以suffix结尾
str.lower() #转小写
str.upper() #转大写
str.strip() #删收尾空(trim)
str.ltrip() #删左空
str.rtrip() #去右空

正则

py
正则表达式
规则写法:r'表达式'
re.search(pattern,string[,flags]) #搜索第一个匹配值
re.findall(pattern,string[,flags]) #全局匹配
re.sub(pattern,replace,string[,count][,flags]) #正则替换
re.split(pattern,string[,maxsplit][,flags]) #正则分割
match=re.match(pattern,string[,flags])
exec:match.group()

函数与类

py
函数
*参数收集所有未匹配的位置参数组成一个tuple对象,局部变量args指向此tuple对象
**参数收集所有未匹配的关键字参数组成一个dict对象,局部变量kwargs指向此dict对象

__init__(self): #构造函数,必须包含一个self,并且必须是第一个
private成员:以__开头
成员方法必须包含self
py实例化对象不需要new
继承基类写在class ClassName(baseclass)
将方法转换为属性:
@property
def ..():
	return ...

文件与目录

py
文件
file=open('xx.txt','w')
file.close()
file.write(string)
file.read()
with open('xx.txt','r') as file:
	string=file.read()
	print(string)
目录
os.getcwd() #获取当前工作目录
os.path.exists(path) #目录/文件是否存在
os.mkdir(path) #创建目录
os.mkdirs() #创建多级目录
os.rmdir(path) #删除目录(目录为空)
os.rename(src,dst) #重命名
os.remove(path) #删除文件

数据库

py
SQLITE3
import sqlite3
conn=sqilte.connect('xx.db')
cursour=conn.cursor()
cursor.execute('SQL语句')
cursor.close()
conn.close()
MYSQL
import pymysql
db=pymysql.connect(host='localhost',user='root',password='root',database='book')
cursor=db.cursor()
cursor.execute('SQL语句')
data=cursor.fetchone() #find
db.close()

常用模块

py
base模块
base64.b64decode
base64.b64encode
requests模块
res=requests.post('http://xxxxx',data=data,headers={'user-agent':'xxxxx'})

升级 GCC (Linux)

bash
yum install centos-release-scl
yum install devtoolset-8
scl enable devtoolset-8 bash

mv /usr/bin/gcc /usr/bin/gcc-4.8.5

ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc

mv /usr/bin/g++ /usr/bin/g++-4.8.5

ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++

gcc --version

g++ --version

图像 Base64 转换

py
import base64
import numpy as np
import cv2
from PIL import Image
from io import BytesIO
import time


# cv2转base64
def cv2_to_base64(img):
    img = cv2.imencode('.jpg', img)[1]
    image_code = str(base64.b64encode(img))[2:-1]

    return image_code


# base64转cv2
def base64_to_cv2(base64_code):
    img_data = base64.b64decode(base64_code)
    img_array = np.fromstring(img_data, np.uint8)
    img = cv2.imdecode(img_array, cv2.COLOR_RGB2BGR)

    return img


# base64转PIL
def base64_to_pil(base64_str):
    image = base64.b64decode(base64_str)
    image = BytesIO(image)
    image = Image.open(image)

    return image


# PIL转base64
def pil_to_base64(image):
    img = cv2.cvtColor(np.asarray(image), cv2.COLOR_RGB2BGR)
    base64_str = cv2_to_base64(img)

    return base64_str


# PIL转cv2
def pil_to_cv2(image):
    img = cv2.cvtColor(np.asarray(image), cv2.COLOR_RGB2BGR)

    return img


# cv2转PIL
def cv2_to_pil(img):
    image = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

    return image