【Python】基础:标准库常用模块

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍标准库常用模块。
学其所用,用其所学。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • :smirk:1. 标准库介绍
    • :blush:2. 环境安装与配置
    • :satisfied:3. 应用示例
      • os库示例
      • datetime库示例
      • random库示例
      • math库示例
      • sys库示例
      • json库示例
      • re库示例
      • csv库示例
      • urllib库示例
      • socket库示例
      • logging库示例

😏1. 标准库介绍

Python标准库是Python编程语言的内置模块集合,它提供了广泛的功能和工具,用于开发各种类型的应用程序。下面是一些常用的Python标准库以及它们的简要介绍:

os:提供与操作系统交互的功能,如文件和目录操作、环境变量访问等。
sys:提供对Python解释器和运行时环境的访问和控制。
datetime:包含处理日期和时间的类和函数,包括日期计算、格式化、解析等。
math:提供常用的数学函数和常量,如三角函数、指数函数、对数函数等。
random:用于生成伪随机数的功能,包括随机数生成器、随机样本选择等。
json:用于处理JSON(JavaScript Object Notation)数据的编码、解码和操作。
re:提供正则表达式匹配和操作的功能。
csv:用于读写CSV(Comma-Separated Values)格式的文件。
urllib:用于进行URL请求和操作,包括HTTP、FTP等。
sqlite3:提供与SQLite数据库进行交互的功能,包括连接、查询、执行事务等。
collections:提供额外的数据类型,如defaultdict、Counter等,用于数据集合的高效操作。
itertools:提供用于迭代操作的函数,如排列组合、循环迭代等。
logging:用于记录日志信息和调试信息的功能,支持多种日志级别和输出方式。
time:提供与时间相关的功能,如获取当前时间、暂停程序执行等。
socket:用于进行网络通信,包括建立TCP/IP连接、发送和接收数据等。

这些只是Python标准库中的一小部分,此外还包含很多其他模块和包,每个模块都提供特定领域的功能和工具。用好标准库,将大大加快我们的开发速度。

😊2. 环境安装与配置

Python标准库是Python的一部分,不需要单独安装。提前安装好python环境即可。

python环境安装参考:http://t.csdn.cn/9rV2a

python导入模块是用import,如import os

😆3. 应用示例

os库示例

import os# 获取当前工作目录
current_dir = os.getcwd()
print("当前工作目录:", current_dir)# 创建新目录
new_dir = "my_directory"
os.mkdir(new_dir)
print("创建目录:", new_dir)# 遍历目录中的文件和子目录
for root, dirs, files in os.walk(current_dir):print("当前目录:", root)print("子目录:", dirs)print("文件:", files)

datetime库示例

from datetime import datetime, timedelta# 获取当前时间
current_time = datetime.now()
print("当前时间:", current_time)# 格式化日期时间字符串
formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
print("格式化时间:", formatted_time)# 计算日期差值
future_date = current_time + timedelta(days=7)
days_diff = (future_date - current_time).days
print("未来日期:", future_date)
print("日期差值(天数):", days_diff)

random库示例

import random# 生成随机整数
random_number = random.randint(1, 10)
print("1-10的随机整数:", random_number)# 从列表中随机选择一个元素
my_list = ["apple", "banana", "cherry"]
random_element = random.choice(my_list)
print("随机选择元素:", random_element)# 打乱列表顺序
random.shuffle(my_list)
print("打乱顺序后的列表:", my_list)

math库示例

import math# 数学常量
print(math.pi) # 输出圆周率π的值# 数学函数
print(math.sqrt(16)) # 平方根函数,输出4.0print(math.ceil(3.7)) # 向上取整,输出4
print(math.floor(3.7)) # 向下取整,输出3print(math.sin(math.pi/2)) # 正弦函数,输出1.0
print(math.cos(math.pi)) # 余弦函数,输出-1.0
print(math.tan(0)) # 正切函数,输出0.0print(math.log(10)) # 自然对数函数,默认底数为e,输出2.302585092994046
print(math.log10(100)) # 以10为底的对数函数,输出2.0print(math.degrees(math.pi/2)) # 弧度转角度,输出90.0
print(math.radians(180)) # 角度转弧度,输出3.141592653589793print(math.factorial(5)) # 阶乘函数,输出120# 其他函数和常量,请参考官方文档查看更多用法

sys库示例

import sys# 获取命令行参数列表
print(sys.argv)  # 输出当前脚本的命令行参数列表# 获取命令行参数个数
print(len(sys.argv))  # 输出当前脚本的命令行参数个数# 强制退出程序
# sys.exit()  # 程序立即退出# 获取Python解释器版本信息
print(sys.version)  # 输出Python解释器的版本信息字符串
print(sys.version_info)  # 输出Python解释器的版本信息元组# 获取操作系统平台信息
print(sys.platform)  # 输出当前操作系统的平台标识符# 获取模块搜索路径
print(sys.path)  # 输出Python解释器搜索模块的路径列表# 获取模块的引用计数
import math
print(sys.getrefcount(math))  # 输出math模块的引用计数# 标准输入输出
sys.stdout.write('Hello, World!\n')  # 使用标准输出打印文本
sys.stdin.readline()  # 从标准输入读取一行文本# 执行程序时的警告设置
sys.warnoptions.append('ignore')  # 忽略所有警告信息# 运行时异常处理
try:1 / 0
except:exc_type, exc_value, exc_traceback = sys.exc_info()  # 获取当前异常信息print(exc_type, exc_value)

json库示例

import json# 将Python对象编码为JSON字符串
data = {'name': 'John','age': 30,'city': 'New York'
}
json_str = json.dumps(data)
print(json_str)  # 输出JSON字符串: {"name": "John", "age": 30, "city": "New York"}# 将JSON字符串解码为Python对象
json_str = '{"name": "John", "age": 30, "city": "New York"}'
data = json.loads(json_str)
print(data)  # 输出Python对象: {'name': 'John', 'age': 30, 'city': 'New York'}# 将Python对象写入JSON文件
data = {'name': 'John','age': 30,'city': 'New York'
}
with open('data.json', 'w') as f:json.dump(data, f)# 从JSON文件中读取Python对象
with open('data.json', 'r') as f:data = json.load(f)
print(data)  # 输出Python对象: {'name': 'John', 'age': 30, 'city': 'New York'}

re库示例

import re# 检查字符串是否匹配正则表达式
pattern = r"ab.*cd"  # 正则表达式模式
text = "abcdefghi"  # 待匹配的字符串
match = re.match(pattern, text)
if match:print("匹配成功")
else:print("匹配失败")# 在字符串中搜索匹配正则表达式的部分
pattern = r"\d+"  # 正则表达式模式,匹配一个或多个数字
text = "Hello 123 World 456"
result = re.search(pattern, text)
if result:print("匹配到的内容:", result.group())  # 输出: 123# 在字符串中进行全局搜索和替换
pattern = r"apple"  # 要搜索和替换的正则表达式模式
text = "I have an apple, I like apple pie."
new_text = re.sub(pattern, "orange", text)
print(new_text)  # 输出: I have an orange, I like orange pie.# 切分字符串
pattern = r"\s+"  # 正则表达式模式,匹配一个或多个连续的空白字符
text = "Hello     World"
parts = re.split(pattern, text)
print(parts)  # 输出: ['Hello', 'World']# 查找所有匹配的字符串
pattern = r"\w+"  # 正则表达式模式,匹配一个或多个连续的字母或数字
text = "Hello 123 World 456"
matches = re.findall(pattern, text)
print(matches)  # 输出: ['Hello', '123', 'World', '456']

csv库示例

import csv# 读取CSV文件
with open('data.csv', 'r') as file:reader = csv.reader(file)for row in reader:print(row)# 写入CSV文件
data = [['Name', 'Age', 'City'],['Alice', 25, 'New York'],['Bob', 30, 'London'],['Charlie', 35, 'Tokyo']
]
with open('data.csv', 'w', newline='') as file:writer = csv.writer(file)writer.writerows(data)# 指定分隔符和引号字符
data = [['Name', 'Age', 'City'],['Alice, Jr.', 25, 'New York'],['Bob', 30, 'London'],['"Charlie, Sr."', 35, 'Tokyo']
]
# 使用with语句来确保正确关闭文件
with open('data.csv', 'w', newline='') as file:writer = csv.writer(file, delimiter=';', quotechar='"', quoting=csv.QUOTE_MINIMAL)writer.writerows(data)

urllib库示例

import urllib.request# 发送GET请求,并获取响应内容
response = urllib.request.urlopen('http://example.com')
html = response.read().decode('utf-8')
print(html)# 发送POST请求,并传递表单数据
data = {'name': 'Alice', 'age': 25}
encoded_data = urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen('http://example.com', data=encoded_data)
html = response.read().decode('utf-8')
print(html)# 下载文件到本地
url = 'http://example.com/images/example.jpg'
urllib.request.urlretrieve(url, 'example.jpg')# 发送带有Headers的请求
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
request = urllib.request.Request('http://example.com', headers=headers)
response = urllib.request.urlopen(request)
html = response.read().decode('utf-8')
print(html)

socket库示例

import socket# 创建TCP套接字并连接到服务器
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('127.0.0.1', 8080))# 发送数据到服务器
message = 'Hello, server!'
client_socket.send(message.encode('utf-8'))# 接收服务器返回的数据
response = client_socket.recv(1024).decode('utf-8')
print(response)# 关闭套接字连接
client_socket.close()# 创建UDP套接字并发送数据
server_address = ('127.0.0.1', 8080)
message = 'Hello, server!'
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
client_socket.sendto(message.encode('utf-8'), server_address)# 接收服务器返回的数据
response, server_address = client_socket.recvfrom(1024)
print(response.decode('utf-8'))# 关闭套接字
client_socket.close()

logging库示例

import logging# 配置日志输出的格式和级别
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s - %(levelname)s - %(message)s'
)# 记录不同级别的日志信息
logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')

在这里插入图片描述

以上。

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

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

相关文章

TiDB Serverless 正式商用,全托管的云服务带来数据管理和应用程序开发的全新体验

八 年 前 ,我们构建了 TiDB,一个开源分布式关系型数据库。 我们的目标是重新定义开发者和企业处理数据的方式,满足不断增长的可扩展性、灵活性和性能需求。 从那时起,PingCAP 便致力于为开发者和企业提供快速、灵活和规模化的数据…

路由的hash和history模式的区别

目录 ✅ 路由模式概述 一. 路由的hash和history模式的区别 1. hash模式 2. history模式 3. 两种模式对比 二. 如何获取页面的hash变化 ✅ 路由模式概述 单页应用是在移动互联时代诞生的,它的目标是不刷新整体页面,通过地址栏中的变化来决定内容区…

微信小程序(van-tabs) 去除横向滚动条样式(附加源码解决方案+报错图)

问题描述 今天第一次接触vant组件库。 ant官网地址适用于Vue3 支持Vue2、Vue3、微信小程序等 我在使用van-tabs组件时遇到了一个问题,如下图所示: 从图片上可以看到有个灰色的横向滚动条,一开始领导给我说这个问题,我反反复复都…

【云原生】使用kubeadm搭建K8S

目录 一、Kubeadm搭建K8S1.1环境准备1.2所有节点安装docker1.3所有节点安装kubeadm,kubelet和kubectl1.4部署K8S集群1.5所有节点部署网络插件flannel 二、部署 Dashboard 一、Kubeadm搭建K8S 1.1环境准备 服务器IP配置master(2C/4G,cpu核心…

JVM 调优

点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~ JVM调优是一项重要的任务,可以提高Java应用程序的性能和稳定性。掌握JVM调优需要深入了解JVM的工作原理、参数和配置选项,以及历史JVM参数的调整和优…

连通块是什么

刷题的时候遇到一个名词概念,连通块是什么? 在图论中,无向图中的连通块(也叫作连通分量)是指原图的一个子图(即该子图只包含原图中的部分或全部顶点及边),该子图任意两个顶点都能通…

基于DiscordMidjourney API接口实现文生图

https://discord.com/api/v9/interactions 请求头: authorization:取自 浏览器中discord 文生图请求头中的 authorization 的值 Content-Type:application/json 请求体: {“type”:2,“application_id”:“93692956130267xxxx”,“guild_id”:“1135900…

Unity Sort Group(排序组)

** Unity 中的Sort Group组组件允许让Sprite Renderer(精灵渲染器)重新决定渲染顺序. ** 作为组件存在 组件内容: Unity 使用Sort Group 组件的Sort layer 和Order in layer的值来确定排序组在渲染队列内相对与场景内其他排序组和游戏对象的优先级。 属性功能So…

PHP使用PhpSpreadsheet实现导出Excel时带下拉框列表 (可支持三级联动)

因项目需要导出Excel表 需要支持下拉 且 还需要支持三级联动功能 目前应为PHPExcel 不在维护,固采用 PhpSpreadsheet 效果如图: 第一步:首先 使用composer 获取PhpSpreadsheet 我这里PHP 版本 7.4 命令如下: composer r…

Charles抓包工具使用(一)(macOS)

Fiddler抓包 | 竟然有这些骚操作,太神奇了? Fiddler响应拦截数据篡改,实现特殊场景深度测试(一) 利用Fiddler抓包调试工具,实现mock数据特殊场景深度测试(二) 利用Fiddler抓包调试工…

分布式电网动态电压恢复器模拟装置电子设计大赛

wx供重浩:创享日记 对话框发送:85电网 获取完整论文报告结构框图工程源文件 摘要:本装置采用DC-AC及AC-DC-AC双重结构,前级采用功率因数校正(PFC)电路完成AC-DC变换,改善输入端电网电能质量。后…

第28天-Kubernetes架构,集群部署,Ingress,项目部署,Dashboard

1.K8S集群部署 1.1.k8s快速入门 1.1.1.简介 Kubernetes简称k8s,是用于自动部署,扩展和管理容器化应用程序的开源系统。 中文官网:https://kubernetes.io/zh/中文社区:https://www.kubernetes.org.cn/官方文档:https…

【期末课程设计】学生成绩管理系统

因其独特,因其始终如一 文章目录 一、学生成绩管理系统介绍 二、学生成绩管理系统设计思路 三、源代码 1. test.c 2. Student Management System.c 3.Stu_System.c 4.Teacher.c 5.Student Management System.h 前言: 学生成绩管理系统含教师…

刷题DAY16

题目一 给定两个字符串str1和str2,再给定三个整数ic、dc和rc,分别代表插入、删除和替换一个字符的代价,返回将str1编辑成str2的最小代价。【举例]str1"abc",str2“adc",ic5,dc3,rc2从“abc“编辑成adc",把b替换成d是代价…

Android学习之路(1) App工程的项目结构

一、App工程的项目结构 1.项目下面有两个分类 一个是app(代表app模块),另一个是Gradle Scripts。其中app下面又有3个子目录,其功能说明如下: manifests 子目录下面只有一个XML文件,即AndroidManifest.xmljava子目录,…

华为QinQ技术的基本qinq和灵活qinq 2种配置案例

基本qinq配置: 运营商pe设备在收到同一个公司的ce发来的的包,统一打上同样的vlan ,如上图,同一个家公司两边统一打上vlan 2,等于在原内网vlan 10或20过来的包再统一打上vlan 2的标签,这样传输就不会和其它…

PostMan调用gitlab接口,OAuth 2.0 身份认证 API ,copy完事~

获取token接口: https://gitlab.***.com/oauth/token ,接下来就可以调用其他功能的接口了 例:创建账户,将获取到的access_token放置在接口请求的token中 其他接口调用同上

华为OD机试之报文回路(Java源码)

题目描述 IGMP 协议中响应报文和查询报文,是维系组播通路的两个重要报文,在一条已经建立的组播通路中两个相邻的 HOST 和 ROUTER,ROUTER 会给 HOST 发送查询报文,HOST 收到查询报文后给 ROUTER 回复一个响应报文,以维持…

【前端知识】React 基础巩固(四十六)——自定义Hook的应用

React 基础巩固(四十六)——自定义Hook的应用 一、自定义Hook的应用 自定义Hook本质上只是一种函数代码逻辑的抽取,严格意义上而言,它并不算React的特性。 实现组件创建/销毁时打印日志 import React, { memo, useEffect, useState } from "react…

嵌入式开发学习(STC51-13-温度传感器)

内容 通过DS18B20温度传感器,在数码管显示检测到的温度值; DS18B20介绍 简介 DS18B20是由DALLAS半导体公司推出的一种的“一线总线(单总线)”接口的温度传感器; 与传统的热敏电阻等测温元件相比,它是一…