模块
1、模块的导入
import导入方式的语法结构
import 模块名称 [as 别名]
from...import导入方式的语法结构
from 模块名称 import 变量/函数/类/*
点击查看代码
示例my_info
name='娟子姐'
def info():
print(f'大家好,我叫{name}')
示例10-2模块的导入
#(1)import
import my_info
print(my_info.name)
my_info.info()
import my_info as a
print(a.name)
a.info()
#(2)from...import
from my_info import name#导入的是具体变量的名称
print(name)
#info()
from my_info import info#导入的是一个具体函数的名称
info()
#(3)通配符
from my_info import *
print(name)
info
#同时导入多个模块
import math,time,random
#导入模块都有相同函数,后一个函数会将前一个覆盖,除非打点调用
示例 introduce
name='ysj'
age=18
def info():
print(f'姓名{name},年龄{age}')
示例10-4模块的导入
from my_info import *
from introduce import *
#导入模块中具有同名的变量和函数,后导入的会将之前的覆盖
info()
#如果不能覆盖,解决方案可以使用import
import my_info
import introduce
#使用模块中的函数或变量时,模块名打点调用
my_info.info()
introduce.info()
2、Python中的包
#主程序运行(可以用于测试包)
if_name_=='_main_':
pass
点击查看代码
#%新建包new->Pathon Package(内涵#_init_.py文件)
#**在admin包内**
#_init_文件:
#print('版权:杨淑娟')
#print('讲师:ysj')
#my_admin文件:
#def info():
# print('大家好,我叫ysj,今年18岁')
#name='杨淑娟'
示例10-7包的导入
import admin.my_admin as a#包名.模块名 admin是包名,my_admin是模块名
a.info()
print('-'*40)
from admin import my_admin as b#from 包名import 模块as 别名
b.info()
print('-'*40)
from admin.my_admin import info #from 包名.模块名 import 函数|变量等
info()
print('-'*40)
from admin.my_admin import *#from 包名.模块名 import *
print(name)
示例modle_a
# print('welcome to Beijing')
# name='ysj'
# print(name)
#main阻止了全局变量的值被输出执行
if __name__ == '__main__':
print('welcome to Beijing')
name='ysj'
print(name)
示例modle_b
#导入的代码
import modle_a
如果一个模块文件中有_all_变量,当使用from xxx import *导入时,只能导入这个列表中的元素
Pathon中常用的内置模块
1、random模块
点击查看代码
示例10-11random模块的使用
#导入
import random
#设置随机数种子,随机数种子相同产生的随机数也相同
random.seed(10)
print(random.random())#第一个random是模块名,第二个是函数名#[0.0,1.0)
print(random.random())
print('-'*50)
random.seed(10)
print(random.randint(1,100))#[1,100]
for i in range(10):#[m,n)步长为k,m-->start-->1,k-->step-->3,n-->stop-->10
print(random.randrange(1,10,3))#12行代码被执行10次
print('-'*50)
print(random.uniform(1,100))#[a,b]随机小数
lst=[i for i in range(1,10)]
print(random.choice(lst))#lst是列表,也称为序列
#随机排序
random.shuffle(lst)
print(lst)
random.shuffle(lst)
print(lst)
2、time模块
点击查看代码
示例10-12time模块的使用
import time
now=time.time()
print(now)
obj=time.localtime()#struct_time对象
print(obj)
obj2=time.localtime(60)#60秒 1970年,1月1日,8时1分8秒
print(obj2)
print(type(obj))
print('年份:',obj2.tm_year)
print('月份:',obj2.tm_mon)
print('日期:',obj2.tm_mday)
print('时',obj2.tm_hour)
print('分',obj2.tm_min)
print('秒',obj2.tm_sec)
print('星期',obj2.tm_wday)#[0,6]3表示星期四,2表示星期三
print('今年第几天',obj2.tm_yday)
print(time.ctime())#时间戳对应的易读的字符串
#日期时间格式化
print(time.strftime('%Y-%m-%d',time.localtime()))#str-->字符串,f-->format,time-->时间
print(time.strftime('%H:%M:%S',time.localtime()))
print('%B月份的名称',time.strftime('%B',time.localtime()))
print('%A星期的名称:',time.strftime('%A',time.localtime()))
#字符串转为struct_time
print(time.strptime('2000-08-08','%Y-%m-%d'))
time.sleep(20)#程序暂停20秒
print('helloworld')
3、datetime模块
点击查看代码
示例10-13datetime模块
from datetime import datetime#从datetime模块中导入datetime类
dt=datetime.now()
print('当前的系统时间为',dt)
#datetime是一个类,手动创建这个类的对象
dt2=datetime(2020,8,8,20,8)
print('dat2的数据类型为',type(dt2),'dat2所表示的时间为',dt2)
print('年',dt2.year,'月',dt2.month,'日',dt2.day)
print('时间',dt2.hour,'分',dt2.month,'秒',dt2.second)
#比较两个datetime类型对象的大小
labor_day=datetime(2028,5,1,0,0,0)
national_day=datetime(2028,10,1,0,0,0)
print('2028年5月1日比2028年10月1日小吗?',labor_day<national_day)#True
#datetime与字符串进行转换
nowdt=datetime.now()
nowdt_str=nowdt.strftime('%Y/%m/%d/ %H:%M:%S')
print('nowdt_str的数据类型',type(nowdt_str),'nowdt_str所表示的数据是什么',nowdt_str),
#字符串转为datetime类型
str_datetime='2028年8月8日 20点8分'
dt3=datetime.strptime(str_datetime,'%Y年%m月%d日 %H点%M分')
print('str_datetime的数据类型为',type(str_datetime),'str_datetime所表示的数据为',str_datetime)
print('dt3的数据类型为',type(dt3),'dt3所表示的数据为',dt3)
示例10-14timedelta类的使用
from datetime import datetime
from datetime import timedelta
#创建两个datetime类型的对象
deltal=datetime(2028,10,1)-datetime(2028,5,1)
print('daltal的数据类型为',type(deltal),'daltal的所表示的数据为',deltal)
print('20285月1日年之后的153天是',datetime(2028,5,1)+deltal)
#通过传入参数的方式创建一个timedelta对象
td1=timedelta(10)
print('创建10天的timedelta对象',td1)
td2=timedelta(10,11)
print('创建10天11秒的timedelta对象',td2)
第三方模块思维安装与卸载
1、requests库
点击查看代码
示例10-15爬取景区天气预报
import requests
import re
url = 'http://www.weather.com.cn/weather1d/101010100.shtml'#爬虫打开的浏览器上的网页
resp= requests.get(url) #打开浏览器打开网址
#设置一下编码格式
resp.encoding='utf-8'
print(resp.text)#resp响应,对象名.属性名 resp.text
city=re.findall('<span class="name">([\u4e00-\u9fa5]*)</span>',resp.text)
weather=re.findall('<span class="weather">([\u4e00-\u9fa5]*)</span>',resp.text)
wd=re.findall('<span class="wd">(.*)</span>',resp.text)
zs=re.findall('<span class="zs">([\u4e00-\u9fa5]*)</span>',resp.text)
print(city)
print(weather)
print(wd)
print(zs)
lst=[]
for a,b,c,d in zip(city,weather,zs,wd):
lst.append([a,b,c,d])
print(lst)
for item in lst:
print(item)
'''
<span class="name">三亚</span>
<span class="weather">多云转雷阵雨</span>
<span class="wd">32/27℃</span>
<span class="zs">适宜</span>
'''
示例10-16爬取百度LOGO图片
import requests
url = 'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png'
resp=requests.get(url)
#保存到本地
with open('logo.png', 'wb') as file:
file.write(resp.content)
2、openpyxl库
点击查看代码
示例weather
import requests
import re
#定义函数
def get_html():
url = 'http://www.weather.com.cn/weather1d/101010100.shtml'#爬虫打开的浏览器上的网页
resp= requests.get(url) #打开浏览器打开网址
#设置一下编码格式
resp.encoding='utf-8'
return resp.text
def parse_html(html_str):#解析
city=re.findall('<span class="name">([\u4e00-\u9fa5]*)</span>',html_str)
weather=re.findall('<span class="weather">([\u4e00-\u9fa5]*)</span>',html_str)
wd=re.findall('<span class="wd">(.*)</span>',html_str)
zs=re.findall('<span class="zs">([\u4e00-\u9fa5]*)</span>',html_str)
lst=[]
for a,b,c,d in zip(city,weather,zs,wd):#封装
lst.append([a,b,c,d])
return lst
示例10-18将数据存储到Excle中
import weather
import openpyxl
html=weather.get_html()#发请求,得响应结果
lst=weather.parse_html(html)#解析数据
#创建一个新的Excle工作簿
workbook = openpyxl.Workbook()#创建对象
#在Excle文件中创建工作表
sheet = workbook.create_sheet('景区天气')
#向工作表中添加数据
for item in lst:
sheet.append(item)#一次添加一行
workbook.save('景区天气.xlsx')
示例10-19从Excle中读取数据
import openpyxl
#打开工作簿
workbook=openpyxl.load_workbook('景区天气.xlsx')
#选择要操作的工作表
sheet=workbook['景区天气']
#表格数据是二维列表,先遍历的是行,后遍历的是列
lst=[]#存储的是行数据
for row in sheet.rows:
sublst=[]
for cell in row:
sublst.append(cell.value)
lst.append(sublst)
for item in lst:
print(item)
3、其他库
点击查看代码
示例10-20从PDF中提取数据
import pdfplumber
#打开pdf文件
with pdfplumber.open('小学数学公式.pdf') as pdf:
for i in pdf.pages:#遍历页
print(i.extract_text())#extract_text()方法提取内容
print(f'-----第{i.page_number}页结束')