文章目录

  • 一、模块的简介与自定义模块
  • 二、主程序运行的方式
  • 三、Python中的包
  • 四、Python中常用的内置模块
    • 4.1 random模块
    • 4.2 time模块
  • 五、第三方模块的安装与卸载
    • 5.1 requests模块
    • 5.2 openyxl模块
    • 5.3常用的其他第三方模块
      • 5.3.1 pdfplumber模块
      • 5.3.2 numpy模块
      • 5.3.3 pandas模块和matplotlib模块
      • 5.3.4 PIL库
      • 5.3.5 wxPython模块
      • 5.3.6 Pygame模块
      • 5.3.7 jieba库
      • 5.3.8 wordcloud库
      • 5.3.9 PyInstaller库
  • 六、 实战——模拟高铁售票(prettytable库)
  • 七、 实战——推算几天后的日期(datetime)
  • 八、 实战——实现GUI登录界面(wxPython)
  • 九、 实战——词云图(jieba和wordcloud)

一、模块的简介与自定义模块

  • 模块的概念:一个.py的Python文件就是一个模块
  • 为什么要使用模块:
    -方便其他程序和脚本的导入和使用
    -避免函数名和变量名冲突的问题
  • 模块命名的规则和规范:全部小写字母,多个单词之前使用下划线分隔
  • 注意事项:不要与Python自带的标准模块名称相同
  • 自定义模块:实际上就是创建一个Python文件
  • 模块的导入
import modulename as 别名
from modulename import 变量/函数/类等import my_info
print(my_info.name)
my_info.info()import my_info as a
print(a.name)
a.info()from my_info import name
print(name)from my_info import info
info()#使用通配符*,导入所有
from my_info import *
print(name)
info()#同时导入多个模块
import math,time,random
  • 导入不同模块中的同名函数
from my_info import *
from introduce import *
#如果导入的模块中有同名的函数等,那么后导入的会将先导入的进行覆盖
info()#解决方案 import
import my_info
import introducemy_info.info()
introduce.info()

二、主程序运行的方式

以主程序形式运行

  • 语法结构
if__name__=='__main__':passif __name__ == '__main__':print('welcome to China')name = 'jww'print(name)

以主程序运行,在该模块被导入到其他模块时,该__main()__中的代码不会被执行
通常主程序中的内容通常是对当前模块的测试内容

三、Python中的包


  • -包是一个分层的目录结构,相当于(文件夹),将一组功能相近的模块组织在同一个包下
    -起到代码规范的作用
    -避免模块名称相冲突的情况

  • 包与目录
    -包里会自带一个__init__.py的文件,在__init__.py文件中的代码,在导入包时会自动执行
    -目录是普通的文件夹
    -如果在普通目录文件夹中创建一个__init__.py的文件,该目录会自动变成包

  • init.py文件在导入包时,会自动执行

  • 包的使用:
    -import 完整的包名.模块名
    -from 完整的包名 import 模块名称
    -from 完整的包名.模块名称 import 变量/函数/类等

import admin.my_admin ##import 包名.模块名
admin.my_admin.info()from admin import my_admin as b ##from 包名 import 模块名 as 别名
b.info()from admin.my_admin import info ##from 包名.模块名 import 函数名/变量等
info()from admin.my_admin import * ##from 包名.模块名 import 通配符*
print(name)
info()

四、Python中常用的内置模块

  • 标准库
    -Python自带的模块成为内置模块,标准模块或被标准库
    -标准库大概270个

4.1 random模块

-用于产生随机数的标准库

import random
random.seed(10) #种子相同,产生的随机数也相同
print(random.random())
print(random.random())
print('-------------------------------------')
random.seed(10)
print(random.random())
print(random.random())#产生[a,b]之间的整数
print(random.randint(1,100))
print('-------------------------------------')#[m,n)步长为k的随机整数
for i in range(10):print(random.randrange(1,10,3))#[a,b]的随机小数
print(random.uniform(1,100))lst = [i for i in range(1,11)]
print(random.choice(lst))#随机排序
random.shuffle(lst)
print(lst)
random.shuffle(lst)
print(lst)

4.2 time模块

-Python提供的处理时间的标准库
-可用来时间处理、时间格式化和计时

import time
now = time.time() #获取当前时间戳
print(now)
# obj = time.localtime() #当前时间戳
obj = time.localtime(60) #60秒
print(obj)
print(type(obj))
print('年份:',obj.tm_year)
print('月份:',obj.tm_mon)
print('日期:',obj.tm_mday)
print('时:',obj.tm_hour)
print('分:',obj.tm_min)
print('秒:',obj.tm_sec)
print('星期:',obj.tm_wday) #0表示星期一[0,6]
print('今年的多少天:',obj.tm_yday)print(time.ctime()) #时间戳对应的易读字符串#日期时间的格式化1. struct_time对象格式化成字符串
print(time.strftime('%Y-%m-%d',time.localtime()))
print(time.strftime('%H:%M:%S',time.localtime()))
print(time.strftime('%B',time.localtime())) #月份
print(time.strftime('%A',time.localtime())) #星期#日期时间的格式化2. 字符串格式化成struct_time对象
print(time.strptime('2008-08-08','%Y-%m-%d'))#计数函数sleep
time.sleep(20)
print('jww')

五、第三方模块的安装与卸载

  • 第三方模块的安装
    pip install 模块名称

  • 第三方模块的卸载
    pip uninstall 模块名称

  • pip命令的升级
    python -m pip install -upgrade pip

5.1 requests模块

-用于处理HTTP(Hypertext Transfer Protocol超文本传输协议)请求的第三方模块
-常用函数:response = requests.get(url,headers)
-响应结果——字符串数据:response.text;二进制数据:response.content

防止反爬步骤:
1.在浏览器页面右键,选择检查
2.在出现的页面里,在上菜单栏选择Network(如果没有出现相关信息,重新刷新网页即可)
3.随意点击一条,在Headers中找到User-Agent(描述浏览器信息的),复制

1.获取景区天气预报

import requests
import re
url = 'http://www.weather.com.cn/weather/101010100.shtml'
#防止反爬
myheader = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
#
resp = requests.get(url, headers=myheader) #resp就是响应结果对象
#设置响应的编码格式为utf-8
resp.encoding = 'utf-8'
# print(resp.text)#正则表达式获取所需内容
city = re.findall('<span class="name">([\u4e00-\u9fa5]*)</span>',resp.text) #[\u4e00-\u9fa5]*表示 中文 多次
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,wd,zs):lst.append([a,b,c,d])
# print(lst)
for item in lst:print(item)

2.爬取百度LOGO图片

import requestsurl = 'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png'
#防止反爬
myheader = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}resp = requests.get(url,headers=myheader,verify=False)#将二进制数据写入磁盘
with open('logo.png','wb') as file:file.write(resp.content)

5.2 openyxl模块

-用于处理Excel文件的模块,可以将Excel中的数据进行写入和读取

  • 将数据写入Excel文件

1.将爬取景区天气数据存储到excel文件
(1)先自定义一个模块weather

import requests
import re
#发请求,获取响应结果
def get_html():url = 'http://www.weather.com.cn/weather/101010100.shtml'#防止反爬myheader = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}#resp = requests.get(url, headers=myheader) #resp就是响应结果对象#设置响应的编码格式为utf-8resp.encoding = 'utf-8'return resp.text#提取有用数据
def parse_html(html_str):city = re.findall('<span class="name">([\u4e00-\u9fa5]*)</span>',html_str) #[\u4e00-\u9fa5]*表示 中文 多次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,wd,zs):lst.append([a,b,c,d])return lst

(2)导入weather模块和openpyxl模块,再进行代码编写

import openpyxl as openpyxl
import weatherlst = weather.parse_html(weather.get_html())
print(lst)#创建新的工作簿
workbook = openpyxl.Workbook()
#创建工作表对象
sheet = workbook.create_sheet('景区天气')
#向工作表中添加数据
for item in lst:sheet.append(item) #一次添加一行workbook.save('景区天气.xlsx')
  • 从Excel文件中读取数据
import openpyxl#打开excel文件
wk = openpyxl.load_workbook('景区天气.xlsx')
#选择要操作的工作表
sheet = wk['景区天气']
#表格数据是一个二维数据,先读行,再读列
lst = [] #存储行数据
for row in sheet.rows:sublst = [] #存储单元格数据for cell in row: #遍历单元格sublst.append(cell.value) #单元格的valuelst.append(sublst)
for item in lst:print(item)

5.3常用的其他第三方模块

5.3.1 pdfplumber模块

- pdfplumber模块:读取pdf文件中的内容

import pdfplumber
#打开PDF文件
with pdfplumber.open('CS231n笔记.pdf') as pdf:for i in pdf.pages:# print(i,type(i))print(i.extract_text())print('-----------------------------------------------------------------------------------------')

5.3.2 numpy模块

- numpy模块:数据分析中其他模块的依赖库,用于处理数组等操作

import numpy as np
import matplotlib.pyplot as plt#读取图片
n1 = plt.imread('jww.jpg')
# print(type(n1),n1)
# n1为三维数组,最高维表示的是图像的高,次高维表示的是图像的宽,最低维表示的是[R,G,B]颜色
plt.imshow(n1)
#编写灰度公式
n2 = np.array([0.299,0.587,0.114]) #固定值
#将数组n1(RGB)颜色值与n2(灰度公式固定值)进行点乘运算
x = np.dot(n1,n2)
#传入数组,显示灰度
plt.imshow(x,cmap='gray')
#显示图像
plt.show()

5.3.3 pandas模块和matplotlib模块

- pandas模块:数据分析中非常重要的模块,也可以读取excel数据

- matplotlib模块:数据可视化模块,用于绘制饼图、柱形图、折线图等

import pandas as pd
import matplotlib.pyplot as plt#读取excel文件
df = pd.read_excel('ytm.xlsx') #DataFrame类型 pandas中重要的数据类型
# print(df)
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['SimHei']
#设置画布大小
plt.figure(figsize=(10,6))
labels = df['学校'] #获取学校这一列
y = df['往年招生人数']
print(labels)
print(y)
plt.pie(y,labels=labels,autopct='%1.2f%%')#设置xy轴刻度一致,保证饼形图是一个圆形
plt.axis('equal')#显示饼图
plt.show()

5.3.4 PIL库

-用于安装图像处理的第三方库
-安装模块的名称为pillow

from PIL import Image#加载图片
im = Image.open('jww.jpg')
# print(type(im),im)
#提取RGB图像的每个颜色通道,返回结果是图像的副本
r,g,b = im.split()
# print(r)
# print(g)
# print(b)
#合并通道,其中mode表示色彩,bands表示的是新的色彩通道
om = Image.merge(mode='RGB',bands=(b,r,g))
om.save('new_jww.jpg')

5.3.5 wxPython模块

- wxPython模块:是一个成熟且特性丰富的跨平台GUI工具包
python3.9以上用不了这个库

5.3.6 Pygame模块

- Pygame模块:专门为电子游戏设计的模块

5.3.7 jieba库

- jieba库:第三方中文文本分词库

import jieba
with open('yannv.txt','r',encoding='utf-8') as file:s = file.read()
# print(s)
#分词
lst = jieba.lcut(s)
# print(lst)
set1 = set(lst)#将列表转为集合,去重
d = {}#使用字典存储词频,key:词,value:出现的次数
for item in set1:if len(item) >= 2: #特殊字符不加进字典d[item] = 0
# print(d)#遍历列表,统计词频
for item in lst:if item in  d:d[item] = d[item] + 1
print(d)#把字典转成列表类型[词,次数]
new_lst = []
for item in d:new_lst.append([item,d[item]])
print(new_lst)#列表排序
new_lst.sort(key=lambda x:x[1], reverse=True)
print(new_lst)

5.3.8 wordcloud库

- wordcloud库:根据文本生成词云图
python3.9以上用不了这个库

5.3.9 PyInstaller库

-PyInstaller库:用于将Python源代码进行打包,生成可执行文件的模块
打包语法:pyinstaller -F 源文件
在cmd使用
-最终打包生成的文件位置如图

-双击该exe
-打包文件如果显示时间过短,可以在源py文件代码结束处加上语句input()

六、 实战——模拟高铁售票(prettytable库)

import prettytable as pt#显示坐席
def show_ticket(row_num): #row_num表示的是座席的排数(行数)tb = pt.PrettyTable() #创建一张表格#设置标题(表格的排头部分tb.field_names = ['行号','座位1','座位2','座位3','座位4','座位5']#遍历初始化’有票‘for i in range(1,row_num+1):lst = [f'第{i}行','有票','有票','有票','有票','有票']#添加到表格中tb.add_row(lst)print(tb)#订票
def order_ticket(row_num,row,column):tb = pt.PrettyTable()  # 创建一张表格# 设置标题(表格的排头部分tb.field_names = ['行号', '座位1', '座位2', '座位3', '座位4', '座位5']for i in range(1,row_num+1):if int(row)==i:lst = [f'第{i}行','有票','有票','有票','有票','有票']lst[int(column)] = '已售'tb.add_row(lst)else:lst = [f'第{i}行', '有票', '有票', '有票', '有票', '有票']print(tb)if __name__ == '__main__':#显示所有座席row_num = 6show_ticket(row_num)#开始售票choice_num = input('请输入选择的座席,如4,4表示第4排第3列:')row,column = choice_num.split(',') #根据逗号分割出行与列order_ticket(row_num,row,column)

七、 实战——推算几天后的日期(datetime)

import datetime
#输入日期的函数
def input_date():inputdate = input('请输入开始日期:(20221109)后按回车:')datestr = inputdate[0:4] + '-' +inputdate[4:6] + '-' + inputdate[6:] #strdt = datetime.datetime.strptime(datestr, '%Y-%m-%d')return dtif __name__ == '__main__':date = input_date()# print(date,type(date))in_num = eval(input('请输入间隔数:')) #可以输入正数或者负数date = date + datetime.timedelta(days=in_num)print('您推算的日期是:', date )

八、 实战——实现GUI登录界面(wxPython)

import wxclass MyFrame(wx.Frame):#初始化方法def __init__(self,parent,id):wx.Frame.__init__(self,parent,id,title='用户登录',size=(400,240))#创建面板panel = wx.Panel(self)#添加文本和输入框self.title = wx.StaticText(panel,label='请输入用户名和密码',pos=(140,20))self.label_user = wx.StaticText(panel,label='用户名:',pos=(50,50))self.text_user = wx.TextCtrl(panel, pos=(100, 50),size=(220,25),style=wx.TE_LEFT)#密码self.label_pwd = wx.StaticText(panel, label='密码:', pos=(50, 90))self.text_pwd = wx.TextCtrl(panel, pos=(100, 90), size=(220, 25), style=wx.TE_PASSWORD)#两个按钮self.bt_login = wx.Button(panel, label='登录', pos=(105, 130))self.bt_cancel = wx.Button(panel, label='取消', pos=(195, 130))#为按钮绑定单击事件self.bt_login.Bind(wx.EVT_BUTTON,self.OnClickLogin)self.bt_cancel.Bind(wx.EVT_BUTTON,self.OnClickCancel)def OnClickLogin(self,event):message = ''user_name = self.text_user.GetValue() #获取输入的用户名user_pwd = self.text_pwd.GetValue()  # 获取输入的密码if user_name=='' or user_pwd=='':message = '用户名或密码不能为空'elif user_name=='jww' and user_pwd=='jww':message = '登录成功'else:message = '用户名或密码不正确'#弹框wx.MessageBox(message)def OnClickCancel(self,event):self.text_user.SetValue('') #清空输入的用户名self.text_pwd.SetValue('') #清空输入的密码#以主函数运行
if __name__ == '__main__':app = wx.App() #启动应用frame = MyFrame(parent=None,id=-1) #-1:按照关键字进行传参frame.Show()app.MainLoop()

九、 实战——词云图(jieba和wordcloud)

import jieba
from wordcloud import WordCloudwith open('yannv.txt','r',encoding='utf-8') as file:s = file.read()#中文分词
lst = jieba.lcut(s)
# print(lst)
stopword = ['上野','千鹤子','厌女','语录','集锦','所以','与','的','其实','不过','那么','是','即','而是'] #排除词txt = ''.join(lst)#绘制词云图
wordcloud = WordCloud(background_color='white',font_path='msyh.ttc',stopwords=stopword,width=800,height=600)
#由txt生成词云图
wordcloud.generate(txt)#保存成图片
wordcloud.to_file('厌女语录集锦词云图.png')

Python基础学习笔记6相关推荐

  1. Python基础学习笔记三

    Python基础学习笔记三 print和import print可以用,分割变量来输出 import copy import copy as co from copy import deepcopy ...

  2. Python基础学习笔记之(二)

    Python基础学习笔记之(二) zouxy09@qq.com http://blog.csdn.net/zouxy09 六.包与模块 1.模块module Python中每一个.py脚本定义一个模块 ...

  3. Python基础学习笔记之(一)

    Python基础学习笔记之(一) zouxy09@qq.com http://blog.csdn.net/zouxy09 前段时间参加微软的windows Azure云计算的一个小培训,其中Pytho ...

  4. Python基础学习笔记(一)

    Python基础学习笔记(一) 基本数据类型   整型(int):1.2.10--   浮点型(float):1.2.2.4.10.00--   布尔型(bool):True.False   字符串( ...

  5. Python 基础学习笔记 03

    Python基础系列 Python 基础学习笔记 01 Python 基础学习笔记 02 Python 基础学习笔记 03 Python 基础学习笔记 04 Python 基础学习笔记 05 文章目录 ...

  6. 8.Python基础学习笔记day8-正则表达式、网络编程、进程与线程

    8.Python基础学习笔记day8-正则表达式.网络编程.进程与线程 一.正则表达式 ''' 1. [1,2,3,4]中任意取3个元素排列: A43 = 4x3x2 = 24itertools.pe ...

  7. python笔记基础-python基础学习笔记(一)

    安装与运行交互式解释器 在绝大多数linux和 UNIX系统安装中(包括Mac OS X),Python的解释器就已经存在了.我们可以在提示符下输入python命令进行验证(作者环境ubuntu) f ...

  8. python基础学习笔记(九)

    python异常 python用异常对象(exception object)来表示异常情况.遇到错误后,会引发异常.如果异常对象并未被处理或捕捉,程序就会用所谓的 回溯(Traceback, 一种错误 ...

  9. Python基础学习笔记:匿名函数

    匿名函数 匿名函数就是不需要显示式的指定函数名 首先看一行代码: def calc(x,y):return x*y print(calc(2,3))# 换成匿名函数calc = lambda x,y: ...

  10. Python基础学习笔记:异常处理与断言(assertions)的运用

    python 提供了两个重要的功能来处理 python 程序在运行中出现的异常和错误: 异常处理 断言(assertions) 1.异常处理 捕捉异常可以使用 try/except 语句. try/e ...

最新文章

  1. eclpse中不小心关掉一些窗口怎么办?
  2. java中多态父类的成员变量和方法调用问题
  3. 全局搜索快捷键_Windows 自带的聚合搜索来了,与 Mac 的 Spotlight 相比体验如何?...
  4. tomcat启动时报下面的错
  5. cxf超时设置不起效_晚上不限时,白天1小时!上海限时长停车场来了
  6. 从0开始html前端页面开发_CSS设置图像透明度
  7. React的contextType的使用方法简介
  8. 《软件体系结构》 练习题
  9. 保姆级教程:个人深度学习工作站配置指南
  10. Allegro中显示mil和mm两种单位
  11. 三菱PLC和卓岚串口服务器使用方法
  12. 计量论文stata代码大全
  13. 前端性能优化的七种方法
  14. B站 URL转16进制防止评论贴URL被屏蔽
  15. 夏津一中2021高考成绩查询,2021德州市地区高考成绩排名查询,德州市高考各高中成绩喜报榜单...
  16. Windows快捷键 - 最大化 最小化 还原
  17. 清北学堂2019.7.17
  18. upc9520: Knight (象棋马从(0,0)到(n,m)的最小步数)
  19. 【字节跳动面试题】赛马问题 64匹马8个跑道最少几次赛出最快的4匹马
  20. 关于adb shell 检测不到手机的问题解决方案

热门文章

  1. 基于微软专利的带蝴蝶出瞳扩展的光波导结构
  2. 元数据(MetaData):
  3. “留白” 与 极简主义
  4. 计算机音乐管弦乐研究现状,【音乐百科】你是否了解管弦乐与管弦乐团的诞生发展脉络?...
  5. 常用邮箱smtp的设置
  6. mstsc java_[转]远程桌面mstsc和带参数的mstsc /console区别
  7. Payroll工资单中英文对照明细
  8. 多线程编程的目标与挑战
  9. ps技术的革命创新-photoshop beta版
  10. 暑假N天乐 —— 多重+分组背包及变形