一、处理路径的os模块
常用方法
1、os.getcwd():得到当前工作目录,即当前python脚本工作的目录路径。
2、os.path.abspath():获得绝对路径
3、os.path.join(path,name):连接目录与文件名或目录
4、os.listdir():返回指定目录下的所有文件和目录名
5、os.remove(file):删除一个文件
6、os.path.existe():检验给出的路径是否真的存在
7、os.path.isfile()和os.path.isdir()分别检验给出的路径是一个目录还是文件
8、os.path.basename(path):返回文件名
9、os.path.dirname(path):返回文件路径
import os
#得到当前工作目录,即当前python脚本工作的目录路径。
print(1)
print(os.getcwd())
#获得绝对路径
print(2)
print(os.path.abspath("test1.txt"))
#连接目录与文件名或目录
print(3)
print(os.path.join(os.getcwd(),"name"))
#返回指定目录下的所有文件和目录名
print(4)
print(os.listdir())
#删除一个文件
print(5)
# os.remove("test1.txt")
#检验给出的路径是否真的存在
print(6)
print(os.path.exists("C:\\YzInterFace"))
#分别检验给出的路径是一个目录还是文件
print(7)
print(os.path.isfile("C:\\YzInterFace"))
print(os.path.isdir("C:\\YzInterFace"))
#返回文件名
print(8)
print(os.path.basename("C:\\YzInterFace\\readme.md"))
#返回文件路径
print(9)
print(os.path.dirname("C:\\YzInterFace\\readme.md"))
#输出
C:\Programs\Python\Python38\python.exe C:/YzInterFace/test_os.py
1
C:\YzInterFace
2
C:\YzInterFace\test1.txt
3
C:\YzInterFace\name
4
['.git', '.idea', 'case', 'common', 'readme.md', 'report', 'run_this.py', 'test_os.py', 'venv', '__init__.py']
5
6
True
7
二、日志模块处理模块logging
常用方法
1、logger = logging.getLogger(logger_name):即创建一个记录器
2、logger.setLevel(logging.ERROR) # 设置日志级别为ERROR,即只有日志级别大于等于ERROR
3、logger.setFormatter(formatter_name) #设置一个格式化器formatter
4、ch.addFilter(filter_name) # 增加一个过滤器,可以增加多个
5、ch.removeFilter(filter_name) # 删除一个过滤器
import logging
#定义对应的程序模块名name,默认是root
logger = logging.getLogger()
#logger.setLevel(logging.DEBUG) #指定最低的日志级别
ch = logging.StreamHandler() #日志输出到屏幕控制台
ch.setLevel(logging.WARNING) #设置日志等级
fh = logging.FileHandler('access.log')#向文件access.log输出日志信息
fh.setLevel(logging.INFO) #设置输出到文件最低日志级别
#create formatter
formatter = logging.Formatter('%(asctime)s %(name)s- %(levelname)s - %(message)s') #定义日志输出格式
#add formatter to ch and fh
ch.setFormatter(formatter) #选择一个格式
fh.setFormatter(formatter)
logger.addHandler(ch) #增加指定的handler
logger.addHandler(fh)
# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')
#输出
C:\Programs\Python\Python38\python.exe C:/YzInterFace/test_logging.py
2020-09-08 16:29:04,908 root- WARNING - warn message
2020-09-08 16:29:04,909 root- ERROR - error message
2020-09-08 16:29:04,909 root- CRITICAL - critical message
#录下生成access.log文件
三、随机数生成模块random
常用方法
1、random.random() #用于生成一个0到1的随机浮点数:0<= n < 1.0
2、random.randint() #返回给定范围之间的随机数。
3、random.choice() #返回给定序列中的随机元素。
4、random.choice() # 从集群中随机选取k次数据,返回一个列表
import random
#语句的含义是产生1至10(包含1与10)的一个随机数(整数int型)。
print(1)
print(random.randint(1,10))
#生成一个0到1之间的随机浮点数,包括0但不包括1,也就是[0.0, 1.0)。
print(2)
print(random.random())
#从序列中随机选取一个元素。seq需要是一个序列,比如list、元组、字符串。
print(3)
seq = [1,3,4,6,2,9,13,15]
print(random.choice(seq))
#随机选择list、元组、字符串中多个值
print(4)
print(random.choices(seq,k=3))
## 0到9随机
print(5)
print(random.randrange(10))
#输出
C:\Programs\Python\Python38\python.exe C:/YzInterFace/test_random.py
1
5
2
0.6739361298967066
3
15
4
[9, 6, 6]
5
6
四、处理时间的模块datetime
1、d1 = datetime.datetime.now() #获取当前时间2020-09-08 14:14:57.576758
2、d3 = d2.strftime('%Y-%m-%d %H:%M:%S') #格式化字符串输出
3、d4 = datetime.datetime.strptime('2020-09-08 14:40:29','%Y-%m-%d %H:%M:%S') #将字符串转化为时间类型
import datetime
#获取当天日期
print(1)
print(datetime.date.today())
##获取当前时间
print(2)
d =datetime.datetime.now()
print(d)
print(3)
# 格式化字符串输出
print(d.now().strftime('%Y-%m-%d %H:%M:%S'))
print(4)
#将字符串转化为时间类型
print(datetime.datetime.strptime('2020-09-08 14:40:29','%Y-%m-%d %H:%M:%S'))
#输出
C:\Programs\Python\Python38\python.exe C:/YzInterFace/test_datetime.py
1
2020-09-08
2
2020-09-08 16:55:13.326834
3
2020-09-08 16:55:13
4
2020-09-08 14:40:29
五、数据库处理模块pymysql
import pymysql
#连接数据库
db = pymysql.connect("localhost","root","xxxxxx","mysql")
#使用cursor()方法创建一个游标对象
cursor = db.cursor()
#使用execute()方法执行SQL语句
cursor.execute("SELECT * FROM userinfo")
#使用fetall()获取全部数据
data = cursor.fetchall()
#关闭游标和数据库的连接
cursor.close()
db.close()
'''
fetchone():获取下一行数据,第一次为首行;
fetchall():获取所有行数据源
fetchmany(4):获取下4行数据
'''
七、处理Excel文档模块openpyxl
常用方法
1、load_workbook():载入已有的Excel文件
2、create_sheet():创建一张表
3、sheetname:查看工作簿中所有的工作表名
4、ws['A1']或者ws.cell(row=4,column=2,value=10):访问单元格
5、ws.max_row:获取工作表中的行数
6、get_sheet_by_name():选择表方法
7、save():保存工作表方法
八、处理编码模块base64
常用方法
1、base64.b64encode(file) #对文件进行Base64编码
2、base64.b64decode(Str) #对字符串进行Base64解码
import base64
print(1)
S = b"I like Python"
e64 = base64.b64encode(S)
print(e64)
print("2")
S = 'SSBsaWtlIFB5dGhvbg=='
d64 = base64.b64decode(S)
print(d64)
#输出
C:\Programs\Python\Python38\python.exe C:/YzInterFace/test_base64.py
1
b'SSBsaWtlIFB5dGhvbg=='
2
b'I like Python'
九、处理邮件发送模块smtplib
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 第三方 SMTP 服务
mail_host="smtp.XXX.com" #设置服务器
mail_user="XXXX" #用户名
mail_pass="XXXXXX" #口令
sender = 'from@runoob.com'
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()
smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号
smtpObj.login(mail_user,mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print ("邮件发送成功")
except smtplib.SMTPException:
print ("Error: 无法发送邮件")
十、正则表达式模块re
常用方法
1、compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
2、re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
3、re.search 扫描整个字符串并返回第一个成功的匹配。
4、findall在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
注意: match 和 search 是匹配一次 findall 匹配所有。
import re
context = 'id="operatorId" value="153968138096924081" />'
#函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。
r = re.compile(r'"operatorId" value="(.*?)" />')
print(r.findall(context))
print('\n')
print(re.match('www', 'www.baidu.cn').span()) # 在起始位置匹配
print(re.match('cn', 'www.baidu.cn')) # 不在起始位置匹配
print('\n')
print(re.search('www', 'www.baidu.cn').span()) # 在起始位置匹配
print(re.search('cn', 'www.baidu.cn').span()) # 不在起始位置匹配
#输出
C:\Programs\Python\Python38\python.exe C:/YzInterFace/test_re.py
['153968138096924081']
(0, 3)
None
(0, 3)
(10, 12)
十一、json处理模块json
常用方法
- json.dumps(): 对数据进行编码。
- json.loads(): 对数据进行解码。
import json
# Python 字典类型转换为 JSON 对象
data = {
'no' : 1,
'name' : 'test',
'url' : 'http://www.test.cn'
}
json_str = json.dumps(data)
print ("Python 原始数据:", repr(data))
print ("JSON 对象:", json_str)
# 将 JSON 对象转换为 Python 字典
data2 = json.loads(json_str)
print ("data2['name']: ", data2['name'])
print ("data2['url']: ", data2['url'])
#输出
C:\Programs\Python\Python38\python.exe C:/YzInterFace/test_json.py
Python 原始数据: {'no': 1, 'name': 'test', 'url': 'http://www.test.cn'}
JSON 对象: {"no": 1, "name": "test", "url": "http://www.test.cn"}
data2['name']: test
data2['url']: http://www.test.cn
十二、处理HTTP请求模块requests
常用方法
1、requests.get #发送get请求
2、requests.post #发送post请求
3、requests.head #查看请求头部信息
import requests
#发送get请求
r0=requests.get("http://httpbin.org/get")
print(r0.text)
print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
#发送post请求
payload={"key1":"value1","key2":"value2"}
r1=requests.post("http://httpbin.org/post",data=payload)
print(r1.text)
print()
print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
payload1={"key3":"value3","key3":"value3"}
r2=requests.request('post',"http://httpbin.org/get",data=payload1)
print(r2.text)
#输出
D:\Programs\Python\Python38\python.exe E:/PyProject/TestDemo1/source/test_demo1.py
{
"args": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.24.0",
"X-Amzn-Trace-Id": "Root=1-5f578150-9042c6983f5450c91d3dc90a"
},
"origin": "223.73.123.144",
"url": "http://httpbin.org/get"
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
{
"args": {},
"data": "",
"files": {},
"form": {
"key1": "value1",
"key2": "value2"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "23",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.24.0",
"X-Amzn-Trace-Id": "Root=1-5f578152-a504a90029852f80e158fba0"
},
"json": null,
"origin": "223.73.123.144",
"url": "http://httpbin.org/post"
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
{
"args": {},
"data": "",
"files": {},
"form": {
"key3": "value3"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "11",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.24.0",
"X-Amzn-Trace-Id": "Root=1-5f578153-d1b7b907045e9611fd29e600"
},
"json": null,
"origin": "223.73.123.144",
"url": "http://httpbin.org/post"
}
十三、处理yaml文件模块
常用方法
1、yaml.load
函数可以接受一个表示YAML文档的字节字符串、Unicode字符串、打开的二进制文件对象或者打开的文本文件对象作为参数。
2、yaml.dump
函数接受一个Python对象并生成一个YAML文档。
import yaml
# open方法打开文件直接读出来
f = open("demo1.yaml", 'r', encoding='utf-8')
cfg = f.read()
# 用load方法转字典
d = yaml.load(cfg)
print(d)
print(d['demo1'])
dic2={"app1":"android","app2":"ios","app3":[1,2,3]}
# 用dump方法将字典转成yaml格式写入到文件
with open("demo2.yaml", 'w', encoding="utf-8") as f:
yaml.dump(dic2, f)
#输出
{'demo1': {'key1': 'values1', 'key2': 'values2', 'key3': ['values3', 'values4']}}
{'key1': 'values1', 'key2': 'values2', 'key3': ['values3', 'values4']}
#demo2文件内容
app1: android
app2: ios
app3:
- 1
- 2
- 3