Day-04python模块

news2024/11/19 12:38:36

一、模块

1-1 Python 自带模块

Json模块

处理json数据

'{"key":"value"}'

json不是字典 本质是一个有引号的字符串数据

json注意点 {} 中的数据是字符串引号必须是双引号


使用json模块可以实现将json转为字典,使用字典的方法操作数据 。 或者将字典转为json

json数据可以实现不同程序之间传递数据

比如使用json将python程序的数据传递java程序

  • json.dumps()

  • json.loads()

# json模块使用
# 导入模块
import json  # 直接导入模块
​
# 1-打开读取jiso文件
with open('D:/Python大数据就业/4-Python基础/day07-模块-网络-多任务/4-资料/order_detial.json','r',encoding='utf-8') as f:
    data_lines  = f.readlines()
​
print(data_lines)
# 2- 对读取的文件数据进行处理
# 需要将每行的json数据转为字典处理
for line in data_lines:
    # 对每行数据去除\n
    line_str = line.replace('\n','')
    print(line_str)
    # 将json字符串转为字典   loads     将字典数据转为json字符串 json_str = json.dumps(字典数据)
    # 如果直接导入模块 需要使用  模块名.函数()  模块名.变量
    line_dict = json.loads(line_str)
    print(type(line_dict))
    # 使用字典操作方法处理数据
    total_price= line_dict['total_price']
    print(total_price)
Datetime模块

处理日期时间数据的

# 日期时间模块
from datetime import datetime,timedelta
​
# 获取当前日期时间
dt_now = datetime.now()
print(dt_now)
# 获取时间戳 timestamp需要将日期传递到方法中
unixtime_now = datetime.timestamp(dt_now)
print(unixtime_now)
​
# 将时间戳数据转为datetime时间
dt = datetime.fromtimestamp(1617021920)
print(dt)
​
# 日期的加减
# 获取加减的时间单位
t = timedelta(days=7)
dt_add = dt_now + t
print(dt_add)
dt_sub = dt_now - t
print(dt_sub)
​
# 字符串时间 转为datetime类型的时间
dt_str = '2017-10-20 15:20:22'
dt2 = datetime.strptime(dt_str,'%Y-%m-%d %H:%M:%S')
print(type(dt2))
​
# 将datetime类型数据转为 字符串
dt_now_str = dt_now.strftime('%Y/%m/%d %H:%M:%S')
print(dt_now_str)
Decimal模块

处理小数数据

类型是双精度浮点 保证小数计算时精度的准确性,一般在进行价格金额计算时使用

# Decimal模块使用
# 导入模块中的所有函数,类,变量
from decimal import *
# 将小数数据转为Decimal
d = Decimal(3.1415926)
print(d)
​
# 指定保留小数  会进行四舍五入
d2 = d.quantize(Decimal('0.000'))
print(d2)
​
d3 = Decimal(5.123).quantize(Decimal('0.000'))
​
d4 = d2+d3
print(d4)
​
random模块

随机产生数据

# random使用
# 将randint函数通过as命名了一个别称
# randint 可以根据指定范围随机产生一个整数数据
from random import randint as rt
​
num = rt(0,3)
print(num)
​
name = ['张三','李四','王五','赵六','aa','bb']
# 随机产生下标
index = rt(0,len(name)-1)
print(name[index])
​
# 验证码
date_str = '123456789asdfghjklqwertyuiopzxcvbnm'
index1 = rt(0,len(date_str)-1)
index2 = rt(0,len(date_str)-1)
index3 = rt(0,len(date_str)-1)
index4 = rt(0,len(date_str)-1)
code =  date_str[index1] + date_str[index2] + date_str[index3] +date_str[index4]
print(code)

1-2 三方模块

第三方开发的代码文件,上传到python的官方模块库中,方便其他开发人员使用

把代码开源个其他程序员

使用三方模块需要进行下载

pip下载安装

pip是python自带的包模块管理工具

  1. 清华大学源:Simple Index

  2. 阿里云源:Simple Index

  3. 中国科技大学源:Simple Index

  4. 豆瓣源:http://pypi.douban.com/simple/

pip install 模块名==版本  -i 安装源

安装爬虫模块

pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

查看是否安装成功

pip list

whl文件安装

1-从官网下载whl文件 PyPI · The Python Package Index

2-在进行pip安装

pip install  whl文件位置
  • 安装pymysql模块

1-3 requests模块使用(拓展)

可以数据采集,测试开发

网络通讯介绍

网络通讯就是程序之间进行通讯,相互传递数据内容

网络通讯三要素

(1)IP地址:网络虚拟环境下的唯一标识,类似于人的身份证号,通过IP可以找到计算机;

(2)端口:表示计算机中某软件的地址信息,通过端口可以找到计算机中的软件;

(3)协议:协议就是通信规则,程序之间必须按照规则传递信息,否则双方无法识别彼此信息

网络通讯模型

C/S模型

C:client

S:server

B/S模型

B:brower

S:server

TCP协议

规定了程序之间的通讯方式

TCP是双向通讯,类似手机通话 双方可以进行数据传递操作

UDP是单向通讯,类似广播 只能有一个人传递数据,其他人等待接收数据


安全数据传输方式是TCP

1-先连接对方程序,连接成功后会返回确认信息。 确认网络是否通畅

2-向对方程序发送数据,对方接受数后,会返回确认信息

3-数据发送完成,会在发送一个关闭连接的消息,对方接受到消息后就知道发送完成

HTTP协议

规定了程序之间的通讯数据格式

web开发中使用浏览器作为客户端,在进行数据传递时,使用http协议,规定了数据的格式

请求的数据格式 也叫作请求报文

  • 请求行 GET / HTTP/1.1

    • GET 请求方式 表示获取数据

    • POST 请求方式 上传数据

  • 请求头

    • User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 代表设备信息

    • 头部中没有user-agent会认为是一个爬虫程序

  • 请求体

    • 携带请求数据

响应的数据格式 叫作响应报文 返回的结果不符合格式,就无法被浏览器解析获取

  • 响应行 HTTP/1.1 200 ok

    • HTTP/1.1 http协议斑斑

    • 200 响应状态 成功 400表示失败 404 找不到页面资源

    • ok 响应的信息

  • 响应头部

    • Content-Type: text/html; charset=utf-8 指定返回的数据形式 html前端页面

    • Server:BWS/1.1 服务名称

  • 响应体

    • 返回处理后的数据给浏览器

    • json

    • html页面

    • 图片

    • 视频

    • 音频

requests使用

数据采集的本质就是使用程序模拟浏览器的行为

Requests: HTTP for Humans™ — Requests 2.32.3 documentation

采集网址

返回json数据

天气接口网址:https://api.oioweb.cn/api/weather/weather?city_name=北京市

返回网页html数据

传智图书库: 图书列表 - 传智教育图书库

  • 获取json数据

# 请求服务器获取json数据
import requests
​
​
# 1-发送请求
# 定义请求网址
url = 'https://api.oioweb.cn/api/weather/weather?city_name=上海市'
# 定义请求头部数据
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'
}
# 发送get请求
respose = requests.get(url,headers=headers) # 定义变量接收响应的数据
​
# 对返回的json数据进行解析,转为字典
response_dict = respose.json()
print(response_dict)
​
# 提取需要的字段数据
# 获取风向数据
wind_direction = response_dict['result']['wind_direction']
print(wind_direction)
  • 获取html页面数据

xpath语法 XPath 教程

html是标签语言,使用xpath可以提取标签中的数据

额外需要模块

lxml模块 将页面数据转为标签元素数据element,就可以使用xpath语法

pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple
# 获取html页面中数据
import requests
from lxml import etree
​
# 1-发送请求
# 定义请求网址
url = 'https://resource.ityxb.com/booklist/find.html?cz-pc-dh'
# 定义请求头部数据
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'
}
# 发送get请求
respose = requests.get(url,headers=headers) # 定义变量接收响应的数据
​
# 获取html的页面数据
html_text = respose.text
​
​
# 将html页面转为element元素数据
html_element = etree.HTML(html_text)
​
# 使用xpath语法开发获取数据
book_name1 = html_element.xpath('//*[@id="content-container"]/div[2]/div[3]/div/div[1]/div[1]/div[2]/p/a/text()')[0]
book_name2 = html_element.xpath('//*[@id="content-container"]/div[2]/div[3]/div/div[1]/div[2]/div[2]/p/a/text()')[0]
book_name3 = html_element.xpath('//*[@id="content-container"]/div[2]/div[3]/div/div[1]/div[3]/div[2]/p/a/text()')[0]
book_name4 = html_element.xpath('//*[@id="content-container"]/div[2]/div[3]/div/div[1]/div[4]/div[2]/p/a/text()')[0]
print(book_name1)
print(book_name2)
print(book_name3)
print(book_name4)

1-4 pymysql模块使用(拓展)

PyMySQL documentation — PyMySQL 0.7.2 documentation

操作mysql数据库

# 使用pymysql模块操作数据
import pymysql
​
# 创建mysql的连接
clinet = pymysql.connect(host='localhost',port=3306,user='root',password='root')
​
# 生成游标操作数据库
cur = clinet.cursor()
​
​
# 数据库操作
# 本质是写sql语句,写在字符串中
sql_str = '''
    create database if not exists pydata45 charset=utf8
'''
# 执行sql
cur.execute(sql_str)
​
# 创建表
sql_str2 = '''
    create table if not exists pydata45.user(
        id int,
        name varchar(20),
        age int,
        gender varchar(20)
    )
'''
# 执行sql语句
cur.execute(sql_str2)
​
# 写入数据
# 将列表数据写表中
sql_str3 = '''
    insert into pydata45.user values(%s,%s,%s,%s)
'''
data_list= [1,'张三',20,'男']
# 执行写入语句
cur.execute(sql_str3,data_list)
# 写入数据必须有commit
clinet.commit()
​
# 将字典数据写入进入
sql_str4 = '''
    insert into pydata45.user values(%(id)s,%(username)s,%(age)s,%(gender)s)
'''
data_dict= {'id':2,'username':'李四','age':20,'gender':'男'}
# 执行写入语句
cur.execute(sql_str4,data_dict)
# 写入数据必须有commit
clinet.commit()
​
# 查询写入的数据
sql_str5 = '''
    select * from pydata45.user
'''
# 执行sql语句
cur.execute(sql_str5)
# 获取查询的数据
data = cur.fetchall()
print(data)
​
​
# 关闭连接
cur.close()
clinet.close()

1-5 自定义模块

本质就是编写一个python文件

文件名要符合python的命名规范

  • 定义一个模块文件

# 自定义的模块文件
# 封装业务代码
name = '张三'
​
def add_func(a,b):
    data = a+b
    return data
​
​
class Student:
    
    def __int__(self,name,age):
        self.name = name
        self.age = age
        
    def func(self):
        print(self.name)
        print(self.age)
        
​
  • 其他开发人员使用模块文件

# 开发人员自己的代码文件
from itcast import name,add_func,Student
​
print(name)
res = add_func(10,20)
print(res)
​
s = Student('张三',20)
s.func()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1720670.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HCIP-Datacom-ARST自选题库__MAC【14道题】

一、单选题 1.缺省情况下,以下哪种安全MAC地址类型在设备重启后表项会丢失? 黑洞MAC地址 Sticky MAC地址 安全动态MAC地址 安全静态MAC地址 2.华为交换机MAC地址表中的动态sticky MAC地址的默认老化时间是多少秒? 300 不会老化 400 500 3.华为交换机MA…

apache大数据各组件部署搭建(超级详细)

apache大数据数仓各组件部署搭建 第一章 环境准备 1. 机器规划 准备3台服务器用于集群部署,系统建议CentOS7+,2核8G内存 172.19.195.228 hadoop101 172.19.195.229 hadoop102 172.19.195.230 hadoop103 [root@hadoop101 ~]# cat /etc/redhat-release CentOS Linux rele…

揭秘APP广告变现项目

在当今移动应用市场,广告变现已经成为开发者盈利策略的重要组成部分。 通过在应用程序中展示多种类型的广告,如插页式广告、横幅广告和激励视频广告,开发者能够获得经济效益。 实现这一目标的核心在于平衡收入与用户体验,避免过…

【差分隐私联邦学习从入门到发文】

差分隐私联邦学习从入门到发文 差分隐私联邦学习从入门到发文一、学习相关理论1. 差分隐私理论解读2. 联邦学习相关收敛性分析3. 差分隐私经典论文解读4. 联邦学习代码解读5. 深度学习相关代码网站 二、必读论文三、最新进展2023 差分隐私联邦学习从入门到发文 这是关于差分隐…

虚拟现实环境下的远程教育和智能评估系统(五)

查阅相关VR眼动注意力联合教育学相关论文 1.Exploring Eye Gaze Visualization Techniques for Identifying Distracted Students in Educational VR(IEEE VR 2020) 摘要:我们提出了一种架构,使VR教学代理能够响应眼动追踪监控…

校园交友|基于SprinBoot+vue的校园交友网站(源码+数据库+文档)

校园交友网站 目录 基于SprinBootvue的校园交友网站 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2后台功能模块 5.2.1管理员功能模块 5.2.2用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#x…

2024年四川省三支一扶报名照片上传成功啦

2024年四川省三支一扶报名照片上传成功,一定要下载照片审核工具哦,详情如下图所示

【设计模式】创建型-建造者模式

前言 在面向对象的软件开发中,构建复杂对象时经常会遇到许多挑战。一种常见的解决方案是使用设计模式,其中建造者模式是一个强大而灵活的选择。本文将深入探讨建造者模式的原理、结构、优点以及如何在实际项目中应用它。 一、复杂的对象 public class…

ARM虚拟机安装OMV

OMV(OpenMediaVault)是基于 Debian GNU/Linux 的网络连接存储(network attached storage,NAS)解决方案。它包含 SSH、(S) FTP、SMB/CIFS、DAAP 媒体服务器、rsync、 BitTorrent 等很多种服务。它可用于 x86-64 和 ARM 平台。 在x86-64平台上&…

小学数学出题器-Word插件-大珩助手

Word大珩助手是一款功能丰富的Office Word插件,旨在提高用户在处理文档时的效率。它具有多种实用的功能,能够帮助用户轻松修改、优化和管理Word文件,从而打造出专业而精美的文档。 【新功能】小学数学出题器 1、实现了难度设定;…

[每周一更]-(第99期):MySQL的索引为什么用B+树?

文章目录 B树与B树的基本概念B树(Balanced Tree)B树(B-Plus Tree)对比 为什么MySQL选择B树1. **磁盘I/O效率**2. **更稳定的查询性能**3. **更高的空间利用率**4. **并发控制** 其他树结构的比较参考 索引是一种 数据结构&#x…

笔记-docker基于ubuntu22.04安装Jitsi Meet

背景 利用JitsiMeet打造一个可以在线会议的环境,根据躺的坑,做个记录 参考 JitsMeet部署安装说明 开始操作 环境 docker run -it --name ubuntu22.04 ubuntu:22.04 /bin/bash问题 1、安装 openjdk-11 apt install openjdk-11-jdk配置环境变量&…

Arduino RP2040 CDC虚拟串口通讯--普通串口不显示

这两天在用RP2040运行些程序,但发现一个问题,使用arduino IDE可以通过串口显示数据,但是其他串口工具不会显示数据,可以打开串口,排查一下午无果,相当头疼, 晚上搜索时发现这个介绍&#xff1a…

strcpy、strncpy、strcat、strncat、strcmp、strstr字符串函数的使用和模拟

strcpy的使用和模拟&#xff08;作用&#xff09; 将一个字符串的内容复制到另外一个字符串中代替掉。 strcpy的使用效果 #include <stdio.h> #include <string.h>int main () {char str1[]"Sample string";char str2[40];char str3[40];strcpy (str2…

使用pytorch搭建textCNN、BERT、transformer进行文本分类

首先展示数据处理后的类型&#xff1a; 第一列为文本&#xff0c;第二类为标注的标签&#xff0c;数据保存在xlsx的表格中&#xff0c;分为训练集和验证集。 textCNN 直接上整个工程代码&#xff1a; import pandas as pd import numpy as np import torch from torch.util…

Java排序算法汇总篇,八种排序算法

排序算法汇总: Java排序算法(一)&#xff1a;冒泡排序 Java排序算法(二)&#xff1a;选择排序 Java排序算法(三)&#xff1a;插入排序 Java排序算法(四)&#xff1a;快速排序 Java排序算法(五)&#xff1a;归并排序 Java排序算法(六)&#xff1a;希尔排序 Java排序算法(…

vm-bhyve网卡设定桥接故障解决@FreeBSD

问题 在使用vm-bhyve虚拟机管理软件的时候&#xff0c;使用vm无法绑定网卡igb0 vm switch add public igb0 报错&#xff1a;/usr/local/sbin/vm: ERROR: failed to add member igb0 to the virtual switch public 解决 于是准备用原生ifconfig命令来绑定&#xff0c;结果…

Pytorch的学习

1.基本数据&#xff1a;Tensor Tensor&#xff0c;即张量&#xff0c;是PyTorch中的基本操作对象&#xff0c;可以看做是包含单一数据类型元素的多维矩阵。从使用角度来看&#xff0c;Tensor与NumPy的ndarrays非常类似&#xff0c;相互之间也可以自由转换&#xff0c;只不过Te…

六一儿童节与AIGC:科技与童趣的奇妙融

随着人工智能生成内容&#xff08;AIGC&#xff09;技术的发展&#xff0c;越来越多的应用和网站专门为儿童提供学习、游戏和绘画方面的支持。这些平台不仅能够提高孩子们的学习兴趣&#xff0c;还能激发他们的创造力。在六一儿童节即将到来之际&#xff0c;让我们来介绍几款利…

Jmeter安装教程

1 Jmeter下载 Jmeter下载地址&#xff1a;https://jmeter.apache.org/download_jmeter.cgi&#xff0c;选择需要的版本点击下载 解压jmeter安装包 解压后的安装包如下&#xff1a; 2 配置Jmeter环境变量 进入环境变量配置页面&#xff1a;计算机->属性->高级系统设置-&…