python开发二

python开发二

requests请求模块

requests 是一个常用的 Python 第三方库,用于发送 HTTP 请求。它提供了简洁且易于使用的接口,使得与 Web 服务进行交互变得非常方便。

发送 GET 请求并获取响应

import requestsresponse = requests.get("https://api.example.com/data")
print(response.status_code)  # 获取响应状态码
print(response.text)  # 获取响应内容

发送带参数的 GET 请求

import requestsresponse = requests.get("https://api.example.com/data")
print(response.status_code)  # 获取响应状态码
print(response.text)  # 获取响应内容

发送 POST 请求并传递数据

import requestsdata = {"key": "value"}
response = requests.post("https://api.example.com/submit", data=data)
print(response.json())  # 解析响应内容为 JSON 格式

发送带有请求头的请求

import requestsheaders = {"User-Agent": "Mozilla/5.0"}
response = requests.get("https://api.example.com/data", headers=headers)
print(response.text)

可以自定义请求头,例如设置 User-Agent、Referer 等,以模拟不同的浏览器或来源。

处理响应内容

import requestsresponse = requests.get("https://api.example.com/data")
print(response.status_code)  # 获取响应状态码
print(response.text)  # 获取响应内容
print(response.json())  # 解析响应内容为 JSON 格式

根据需要,可以获取响应的状态码、文本内容或将响应内容解析为 JSON 格式。

处理异常和错误

import requeststry:response = requests.get("https://api.example.com/data")response.raise_for_status()  # 如果请求失败,抛出异常
except requests.HTTPError as e:print("HTTP Error:", e)
except requests.RequestException as e:print("Error:", e)

使用 try-except 块来捕获可能发生的异常,如网络连接错误、超时等。

文件上传和下载

import requests# 文件上传
files = {"file": open("file.txt", "rb")}
response = requests.post("https://api.example.com/upload", files=files)# 文件下载
response = requests.get("https://example.com/image.jpg")
with open("image.jpg", "wb") as file:file.write(response.content)

可以使用 files 参数将文件上传到服务器,并使用 response.content 获取返回的二进制数据,然后将其保存到本地文件中。

base64模块

    1. 编码:

b64encode(s): 对给定的字节串(bytes)进行 Base64 编码,返回编码后的字节串。
b64encode(s, altchars): 使用指定的替代字符进行 Base64 编码。

    1. 解码:

b64decode(s): 对给定的 Base64 编码的字节串进行解码,返回解码后的字节串。
b64decode(s, altchars): 使用指定的替代字符进行 Base64 解码。
示例:

import base64# 编码
text = "Hello, World!".encode("utf-8")
encoded_text = base64.b64encode(text)
print(encoded_text)  # 输出:b'SGVsbG8sIFdvcmxkIQ=='# 解码
decoded_text = base64.b64decode(encoded_text)
print(decoded_text.decode("utf-8"))  # 输出:Hello, World!

编码和解码 URL 安全的 Base64:

URL 安全的 Base64 在编码结果中使用 - 和 _ 替代 + 和 /。可以使用 urlsafe_b64encode() 和 urlsafe_b64decode() 函数进行 URL 安全的编码和解码。

import base64text = "Hello, World!".encode("utf-8")# URL 安全的 Base64 编码
encoded_text = base64.urlsafe_b64encode(text)
print(encoded_text)  # 输出:b'SGVsbG8sIFdvcmxkIQ=='# URL 安全的 Base64 解码
decoded_text = base64.urlsafe_b64decode(encoded_text)
print(decoded_text.decode("utf-8"))  # 输出:Hello, World!

多行输出和填充字符控制

可以使用 b64encode() 函数的 break_lines 参数来控制是否启用多行输出,并使用 b64encode() 和 b64decode() 函数的 pad 参数来控制是否启用填充字符。

import base64text = "Hello, World!".encode("utf-8")# 启用多行输出和填充字符
encoded_text = base64.b64encode(text, break_lines=True).decode("utf-8")
print(encoded_text)decoded_text = base64.b64decode(encoded_text, pad=True).decode("utf-8")
print(decoded_text)

对文件进行编码和解码

import base64# 编码文件
with open("example.jpg", "rb") as file:encoded_image = base64.b64encode(file.read())print(encoded_image)# 解码文件
with open("decoded_image.jpg", "wb") as file:file.write(base64.b64decode(encoded_image))

etree模块

    1. 解析 XML 数据:

parse(file): 解析给定文件名或文件对象中的 XML 数据,并返回根元素对象。
fromstring(xmlstring): 解析给定的 XML 字符串,并返回根元素对象。

    1. 遍历 XML 树

iter(): 遍历 XML 树的所有元素。
find(tag): 在当前元素的子元素中查找并返回第一个具有给定标签名的子元素。
findall(tag): 在当前元素的子元素中查找并返回所有具有给定标签名的子元素。

    1. 获取和修改元素内容:

text: 获取或设置元素的文本内容。
attrib: 获取或设置元素的属性字典。
示例:

import xml.etree.ElementTree as etree# 解析 XML 数据
tree = etree.parse("data.xml")
root = tree.getroot()# 遍历 XML 树
for child in root:print(child.tag, child.attrib)# 获取和修改元素内容
element = root.find("element")
print(element.text)  # 输出元素的文本内容element.text = "New Text"  # 修改元素的文本内容
element.set("attribute", "value")  # 设置元素的属性# 生成 XML 字符串
xml_string = etree.tostring(root, encoding="utf-8")
print(xml_string)

创建新的 XML 元素

  • Element(tag, attrib={}): 创建具有给定标签名和属性的新元素。
  • SubElement(parent, tag, attrib={}): 在父元素下创建具有给定标签名和属性的新子元素。
import xml.etree.ElementTree as etree# 创建根元素
root = etree.Element("root")# 创建子元素
child = etree.SubElement(root, "child")
child.text = "Hello"# 添加属性
child.set("attribute", "value")# 输出 XML 字符串
xml_string = etree.tostring(root, encoding="utf-8")
print(xml_string)

删除元素

  • remove(element): 从父元素中删除指定的子元素
import xml.etree.ElementTree as etreetree = etree.parse("data.xml")
root = tree.getroot()# 删除指定的子元素
element_to_remove = root.find("element")
root.remove(element_to_remove)# 输出修改后的 XML 字符串
xml_string = etree.tostring(root, encoding="utf-8")
print(xml_string)

寻找命名空间

  • register_namespace(prefix, uri): 注册一个命名空间前缀和 URI 的映射关系。
  • QName(uri, localname): 创建具有给定命名空间 URI 和本地名称的 QName 对象。
import xml.etree.ElementTree as etree# 注册命名空间前缀和 URI 映射关系
etree.register_namespace("prefix", "http://example.com/ns")# 创建带有命名空间的元素
element = etree.Element("{http://example.com/ns}tag")# 使用 QName 创建带有命名空间的属性
qname = etree.QName("http://example.com/ns", "attribute")
element.set(qname, "value")

解析和生成字符串

  • tostring(element, encoding=‘unicode’): 将给定的元素转换为字符串。
  • fromstringlist(sequence): 从字符串列表解析多个 XML 文档。
import xml.etree.ElementTree as etree# 解析多个 XML 文档
xml_list = ['<root><child>1</child></root>', '<root><child>2</child></root>']
for xml_string in xml_list:root = etree.fromstring(xml_string)# 处理每个 XML 文档# 生成 XML 字符串
root = etree.Element("root")
xml_string = etree.tostring(root, encoding="utf-8")
print(xml_string)

xpath解析方式

XPath 是一种用于在 XML 文档中定位元素的语言。etree 模块提供了支持 XPath 的功能,使得可以使用 XPath 表达式来解析和选取 XML 数据。

以下是使用 XPath 解析 XML 数据的示例:

import xml.etree.ElementTree as etree# 解析 XML 数据
tree = etree.parse("data.xml")
root = tree.getroot()# 使用 XPath 选取元素
elements = root.findall(".//element")  # 选取所有名为 "element" 的元素
for element in elements:print(element.text)element = root.find(".//element[@attribute='value']")  # 选取具有属性值为 "value" 的 "element" 元素
if element is not None:print(element.text)

利用xpath获取网址的域名,标题和IP地址

import requests
from lxml import etree# 发送请求并获取网页内容
url = "https://example.com"  # 替换为您要获取信息的网址
response = requests.get(url)
html = response.text# 使用 lxml 解析 HTML
tree = etree.HTML(html)# 使用 XPath 提取域名
domain = tree.xpath("//a/@href")
if domain:domain = domain[0].strip("/")# 使用 XPath 提取标题
title = tree.xpath("//title/text()")[0]# 使用 XPath 提取 IP 地址
ip_address = tree.xpath("//span[@class='ip-address']/text()")[0]# 打印结果
print("Domain:", domain)
print("Title:", title)
print("IP Address:", ip_address)

具体情况需要根据实际情况修改 XPath 表达式,以适应目标网页的结构和元素选择方式。

ftplib库

ftplib 模块提供了一系列方法和功能,用于通过 FTP 协议进行文件传输和管理。以下是 ftplib 的主要功能:

连接和认证:

  • FTP(host[, user[, passwd]]): 创建一个 FTP 对象并连接到指定的 FTP 服务器。
  • login(user=‘’, passwd=‘’, acct=‘’): 使用给定的用户名、密码和账户信息进行认证。

文件上传和下载:

  • storbinary(cmd, file[, blocksize[, callback[, rest]]]): 将本地文件的数据流上传到远程服务器。
  • retrbinary(cmd, callback[, maxblocksize[, rest]]): 从远程服务器下载文件的数据流到本地。
  • storlines(cmd, file[, callback]): 将本地文件逐行上传到远程服务器。
  • retrlines(cmd, callback): 从远程服务器逐行下载文件到本地。

目录和文件管理:

  • cwd(path): 更改当前工作目录到指定的路径。
  • pwd(): 获取当前工作目录的路径。
  • nlst([path]): 列出指定路径下的文件和目录名称(不包含详细信息)。
  • dir([path[,…]]): 列出指定路径下的文件和目录详细信息。
  • delete(pathname): 删除远程服务器上的指定文件。
  • rename(fromname, toname): 重命名远程服务器上的文件或目录。
  • mkd(pathname): 在远程服务器上创建新目录。
  • rmd(dirname): 删除远程服务器上的指定目录。

其他功能:

  • quit(): 关闭 FTP 连接。
  • getwelcome(): 获取服务器的欢迎消息。
  • sendcmd(cmd): 发送原始 FTP 命令到服务器。
  • voidcmd(cmd): 执行无返回值的 FTP 命令。
  • voidresp(): 等待服务器的响应,如果响应不是成功的响应码,则引发异常。

示例:

from ftplib import FTP# 连接和认证
ftp = FTP("example.com")
ftp.login(user="username", passwd="password")# 文件上传和下载
with open("local_file.txt", "rb") as file:ftp.storbinary("STOR remote_file.txt", file)with open("local_file.txt", "wb") as file:ftp.retrbinary("RETR remote_file.txt", file.write)# 目录和文件管理
ftp.cwd("/path/to/directory")
current_dir = ftp.pwd()
file_list = ftp.nlst("/path/to/directory")
dir_list = ftp.dir("/path/to/directory")
ftp.delete("/path/to/file.txt")
ftp.rename("/path/from/file.txt", "/path/to/file.txt")
ftp.mkd("/path/to/new_directory")
ftp.rmd("/path/to/directory")# 其他功能
ftp.quit()
welcome_message = ftp.getwelcome()
response = ftp.sendcmd("CMD")
ftp.voidcmd("CMD")
ftp.voidresp()

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

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

相关文章

跨越智能建筑桥梁:西门子PLC无缝对接BACnet楼宇自动化系统化

智能楼宇每一个环节的互联互通都至关重要&#xff0c;而PLC&#xff08;可编程逻辑控制器&#xff09;作为自动化领域的基石&#xff0c;其与BACnet协议的融合无疑成为了构建智能楼宇神经系统的关键节点。今天&#xff0c;让我们深入探讨如何利用先进的PLC转BACnet协议网关&…

使用Python实现2048小游戏

使用Python实现2048小游戏源码分享。实现效果如下所示。 实现效果图 游戏开始效果图 游戏结束效果图 部分源码截图 下载链接 基于如下的运行环境。运行需要安装tkinter /Library/Frameworks/Python.framework/Versions/3.7/bin/python/bin/python /Users/nihui/Documents/P…

AI预测体彩排3第3套算法实战化赚米验证第1弹2024年5月5日第1次测试

从今天开始&#xff0c;准备启用第3套算法&#xff0c;来验证下本算法的可行性。因为本算法通过近三十期的内测&#xff08;内测版没有公开预测结果&#xff09;&#xff0c;发现本算法的预测结果优于其他所有算法的效果。彩票预测只有实战才能检验是否有效&#xff0c;只有真正…

电脑中的两个固态硬盘比一个好,想知道为什么吗

你当前的电脑很有可能有一个NVME SSD作为主驱动器&#xff0c;但可能至少还有一个插槽可以放另一个SSD&#xff0c;而且这样做可能是个好主意。 两个SSD可以提高性能 如果你有两个固态硬盘&#xff0c;你可以从中获得比有一个更好的性能。一种方法是使用RAID 0将两个驱动器组…

使用 PXE+Kickstart 批量网络自动装机

前言&#xff1a; 正常安装系统的话使用u盘一个一个安装会非常慢&#xff0c;所以批量安装的技术就出来了。 一、 概念 PXE &#xff08;Preboot eXecute Environment&#xff0c;预启动执行环境&#xff09;是由 Intel 公司开发的技术&#xff0c;可以让计算机通过网络来启动…

Calendar 366 II for Mac v2.15.5激活版:智能日历管理软件

在繁忙的工作和生活中&#xff0c;如何高效管理日程成为了许多人的难题。Calendar 366 II for Mac&#xff0c;作为一款全方位的日历管理软件&#xff0c;以其独特的功能和优秀的用户体验&#xff0c;成为您的日程好帮手。 Calendar 366 II for Mac支持多种视图模式&#xff0c…

【Java基础】设计模式——单例设计模式

单例设计模式&#xff08;Singleton Design Pattern&#xff09;是一种创建型设计模式&#xff0c;它确保⼀个类有且只有⼀个实例&#xff0c;并提供一个全局访问点来访问这个唯一实例。 单例模式主要解决的是&#xff0c;⼀个全局使⽤的类频繁的创建和消费&#xff0c;从⽽提…

vivado 低级别 SVF JTAG 命令

低级别 SVF JTAG 命令 注释 &#xff1a; 在 Versal ™ 器件上不支持 SVF 。 低级别 JTAG 命令允许您扫描多个 FPGA JTAG 链。针对链操作所生成的 SVF 命令使用这些低级别命令来访问链中的 FPGA 。 报头数据寄存器 (HDR) 和报头指令寄存器 (HIR) 语法 HDR length […

JAVA-猜数字游戏

以下是一个简单的Java猜数字游戏的代码。 import java.util.Random; import java.util.Scanner; public class GuessNumberGame { public static void main(String[] args) { Random rand new Random(); int secretNumber rand.nextInt(100) 1; // 生成1到100之间的随…

功率半导体测试挑战及应对方案详解

功率半导体是电子产业链中最核心的一类器件&#xff0c; 能够实现电能转换和电路控制作用。功率半导体包括功率半导体分立器件(含模块)以及功率IC等。其中&#xff0c;功率半导体分立器件按照器件结构可分为二极管、晶闸管和晶体管等。 以MOSFET、IGBT以及SiC MOSFET为代表的功…

【教学类-53-01】20240509“去掉背景的png彩色图片”转“黑色影子图”

作品展示 背景需求&#xff1a; 刚写完蒙德里安涂色学具&#xff0c;准备开课&#xff0c;转眼班级就“百日咳“”隔离3周&#xff0c;o(╥﹏╥)o 我的AI对话大师只剩1个月的有效期&#xff0c;剩下9万6千次也马上就作废了。 最后一个月可以尽量多用掉一些&#xff0c;我从小…

SpringBoot 扩展篇:ConfigFileApplicationListener源码解析

SpringBoot 扩展篇&#xff1a;ConfigFileApplicationListener源码解析 1.概述2. ConfigFileApplicationListener定义3. ConfigFileApplicationListener回调链路3.1 SpringApplication#run3.2 SpringApplication#prepareEnvironment3.3 配置environment 4. 环境准备事件 Config…

leetcode 2320.统计放置房子的方式数

思路&#xff1a;dp 其实我们不难发现&#xff0c;如果我们按照单侧来说&#xff0c;并且让我们求最大价值的话&#xff0c;这就是一个打家劫舍的动态规划问题。 但是这里我们需要求方案数。所以这里我们的dp含义就变成了&#xff1a;在前i块地皮中放置房子的方案数。 首先就…

第十篇:数字堡垒:操作系统安全深度解析与实战指南

数字堡垒&#xff1a;操作系统安全深度解析与实战指南 1 *引言 1.1 数字世界的守护者 在遥远的比特海中&#xff0c;有一座名为“操作系统”的数字堡垒&#xff0c;它守护着我们的数据宝藏&#xff0c;确保每一次计算的航行都能安全抵达彼岸。然而&#xff0c;这片海域并非风…

2024年最新【SpringBoot2】开发实用篇-测试_springboot2 test(1),2024年最新2024春招BAT面试真题详解

既有适合小白学习的零基础资料&#xff0c;也有适合3年以上经验的小伙伴深入学习提升的进阶课程&#xff0c;涵盖了95%以上软件测试知识点&#xff0c;真正体系化&#xff01; 由于文件比较多&#xff0c;这里只是将部分目录截图出来&#xff0c;全套包含大厂面经、学习笔记、…

推荐一个好用的数据集处理脚本

前段时间在整理数据集&#xff0c;但是需要先处理一下数据集&#xff0c;批量的修改图片的名字&#xff0c;因此找了一下的代码&#xff0c;这非常好用&#xff0c;分享给大家。 注意事项&#xff1a;转换后&#xff0c;这脚本会把你之前文件夹的内容全删掉。 import osclass …

2024最新大厂C++面试真题合集,大厂面试百日冲刺 bay8

腾讯视频 C多态性如何体现&#xff1f;模版怎么实现的多态&#xff1f; C中的多态性主要通过两种方式体现&#xff1a;虚函数&#xff08;动态多态性&#xff09;和模板&#xff08;静态多态性&#xff09;。 虚函数实现的多态性&#xff1a;通过基类指针或者引用&#xff0…

YOLOv5,YOLOv7改进之结合​SOCA

1.SOCA moudle结构图 2,YOLOv5,YOLOv7改进之结合​SOCA 1.配置common.py文件 #SOCA moudle 单幅图像超分辨率 class Covpool(Function):@staticmethoddef forward(ctx, input):x = inputbatchSize = x.data.shape[0]dim = x.data.shape[1]h = x.data.shape[2]w = x.data.sha…

微信小程序开发秘籍:解锁地理位置服务与周边信息探索

微信小程序开发秘籍&#xff1a;解锁地理位置服务与周边信息探索 一、地理信息服务基础1.1 什么是地理信息服务&#xff1f;1.2 微信小程序中的GIS API简介 二、获取用户位置&#xff1a;wx.getLocation实战2.1 API介绍2.2 代码示例 三、周边信息获取&#xff1a;利用腾讯位置服…

docker Harbor私有仓库部署管理

搭建本地私有仓库&#xff0c;但是本地私有仓库的管理和使用比较麻烦&#xff0c;这个原生的私有仓库并不好用&#xff0c;所以我们采用harbor私有仓库&#xff0c;也叫私服&#xff0c;更加人性化。 一、什么是Harbor Harbor是VWware 公司开源的企业级Docker Registry项…