「Python系列」Python标准库
文章目录
- 一、 `os` 模块:文件和目录操作
- 二、 `sys` 模块:与Python解释器交互
- 三、 `datetime` 模块:日期和时间处理
- 四、 `json` 模块:处理JSON数据
- 五、 `re` 模块:正则表达式
- 六、 `time`模块
- 1. 获取当前时间
- 2. 延迟执行(休眠)
- 3. 执行时间的测量
- 4. 时间格式化
- 5. 时间戳与结构化时间转换
- 七、 `random`模块
- 1. 生成随机整数
- 2. 生成随机浮点数
- 3. 打乱列表顺序
- 4. 随机选择元素
- 5. 设置随机数种子
- 6. 随机分割列表
- 八、`math`模块
- 1. 常量
- 2. 幂和对数
- 3. 开方
- 4. 三角函数
- 5. 舍入函数
- 6. 阶乘
- 7. 最大值和最小值
- 九、`urllib`模块
- 1. `urllib.request` - 打开和读取 URL
- 2. `urllib.parse` - 解析 URL
- 3. `urllib.error` - 异常处理
- 4. `urllib.robotparser` - 读取和解析 robots.txt 文件
- 十、相关链接
Python标准库是Python编程语言自带的一系列模块和功能的集合,这些模块提供了各种常见任务的解决方案,如文件处理、网络编程、数据库接口、图形界面开发、科学计算等。使用标准库可以大大提高开发效率,减少重复劳动。
一、 os 模块:文件和目录操作
import os# 获取当前工作目录
current_directory = os.getcwd()
print("当前工作目录:", current_directory)# 更改工作目录
os.chdir("/path/to/new/directory")
print("新的工作目录:", os.getcwd())# 列出目录中的文件
files = os.listdir()
print("当前目录中的文件:", files)# 判断文件或目录是否存在
if os.path.exists("file.txt"):print("文件存在")# 创建新目录
os.mkdir("new_directory")# 删除文件
os.remove("file.txt")# 删除目录(需确保目录为空)
os.rmdir("new_directory")
二、 sys 模块:与Python解释器交互
import sys# 访问命令行参数
print("命令行参数:", sys.argv)# 退出程序
sys.exit("程序退出")# 标准输出和标准错误输出
print("这是标准输出")
sys.stderr.write("这是标准错误输出\n")
三、 datetime 模块:日期和时间处理
import datetime# 获取当前日期和时间
now = datetime.datetime.now()
print("当前日期和时间:", now)# 创建自定义日期和时间
custom_date = datetime.datetime(2023, 3, 15, 12, 30)
print("自定义日期和时间:", custom_date)# 计算两个日期之间的差值
delta = datetime.timedelta(days=5)
print("5天后的日期:", now + delta)# 格式化日期和时间
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化后的日期:", formatted_date)
四、 json 模块:处理JSON数据
import json# Python对象转换为JSON字符串
data = {"name": "John Doe","age": 30,"city": "New York"
}
json_string = json.dumps(data)
print("JSON字符串:", json_string)# JSON字符串转换为Python对象
parsed_data = json.loads(json_string)
print("解析后的Python对象:", parsed_data)
五、 re 模块:正则表达式
import re# 匹配字符串中的数字
pattern = re.compile(r'\d+')
match = pattern.findall("The price is 123 dollars.")
print("找到的数字:", match)# 替换字符串中的模式
new_string = re.sub(r'\d+', '42', "The price is 123 dollars.")
print("替换后的字符串:", new_string)
六、 time模块
time 模块是 Python 的标准库之一,用于处理时间相关的操作。你可以使用 time 模块来获取当前时间、执行时间的测量、延迟执行等。下面是一些 time 模块的常见用法和案例代码:
1. 获取当前时间
import time# 获取当前时间戳(以秒为单位的浮点数)
current_time = time.time()
print("Current time in seconds:", current_time)# 格式化时间戳为本地时间
local_time = time.localtime(current_time)
print("Local time:", local_time)# 格式化时间戳为字符串
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
print("Formatted time:", formatted_time)
2. 延迟执行(休眠)
import time# 延迟执行 5 秒
time.sleep(5)
print("5 seconds have passed.")
3. 执行时间的测量
import timestart_time = time.time()# 执行一些操作
for i in range(1000000):passend_time = time.time()
elapsed_time = end_time - start_timeprint("Elapsed time:", elapsed_time, "seconds")
4. 时间格式化
import time# 获取当前时间戳
current_time = time.time()# 使用strftime方法格式化时间
formatted_time = time.strftime("%A, %d. %B %Y %H:%M:%S", time.localtime(current_time))
print("Formatted time:", formatted_time)# 常用的格式化代码
# %A: 星期几的完整文本表示
# %a: 星期几的缩写表示
# %B: 月份的完整文本表示
# %b: 月份的缩写表示
# %d: 日,两位数的表示
# %H: 小时,24小时制,两位数表示
# %I: 小时,12小时制,两位数表示
# %M: 分钟,两位数表示
# %S: 秒,两位数表示
# %Y: 年份,四位数表示
# %y: 年份,两位数表示
5. 时间戳与结构化时间转换
import time# 将时间戳转换为结构化时间
timestamp = 1626700800 # 假设这是一个时间戳
structured_time = time.localtime(timestamp)
print("Structured time:", structured_time)# 将结构化时间转换为时间戳
structured_time = time.struct_time((2021, 7, 20, 0, 0, 0, 0, 0, 0))
timestamp = time.mktime(structured_time)
print("Timestamp:", timestamp)
time 模块提供了多种方法来处理时间,从获取当前时间到执行时间的测量,再到时间戳和结构化时间之间的转换。在处理时间相关的任务时,它是非常有用的。
七、 random模块
random 模块是 Python 的标准库之一,用于生成随机数。你可以使用 random 模块来生成伪随机数,这些数在多种应用中都很有用,比如模拟、游戏、统计模型等。下面是一些 random 模块的常见用法和案例代码:
1. 生成随机整数
import random# 生成一个0到9之间的随机整数
random_integer = random.randint(0, 9)
print("Random integer:", random_integer)# 生成一个随机选择的整数列表
random_integers = random.sample(range(100), 5) # 从0到99中选择5个不重复的整数
print("Random integers:", random_integers)
2. 生成随机浮点数
import random# 生成一个0.0到1.0之间的随机浮点数
random_float = random.random()
print("Random float:", random_float)# 生成一个指定范围内的随机浮点数
random_float_in_range = random.uniform(1.0, 10.0) # 在1.0到10.0之间
print("Random float in range:", random_float_in_range)
3. 打乱列表顺序
import random# 打乱列表顺序
my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print("Shuffled list:", my_list)
4. 随机选择元素
import random# 从列表中随机选择一个元素
my_list = ['apple', 'banana', 'cherry']
random_choice = random.choice(my_list)
print("Random choice:", random_choice)
5. 设置随机数种子
import random# 设置随机数种子,使得每次生成的随机数序列相同
random.seed(1)# 生成随机整数
print(random.randint(0, 9))# 再次生成随机整数,由于种子相同,结果应该与上一次相同
print(random.randint(0, 9))
通过设置随机数种子,你可以确保每次运行程序时生成的随机数序列是相同的,这在需要可重复的实验或调试时非常有用。
6. 随机分割列表
import random# 随机分割列表为两部分
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
split_index = random.randint(0, len(my_list) - 1)
first_part = my_list[:split_index]
second_part = my_list[split_index:]
print("First part:", first_part)
print("Second part:", second_part)
random 模块提供了丰富的功能来生成各种类型的随机数。请注意,由于它们是伪随机数生成器,所以并不是真正的随机,但对于大多数应用来说,它们的随机性已经足够了。如果你需要更高质量的随机数,可能需要考虑使用专门的随机数生成库。
八、math模块
math 模块是 Python 的标准库之一,提供了对一系列数学函数的访问,这些函数有助于执行基本的数学运算,如三角函数、对数、指数函数、开方等。以下是一些 math 模块的常见用法和案例代码:
1. 常量
math 模块包含了一些常用的数学常量,如 π 和 e。
import math# 圆周率 π
pi_value = math.pi
print("Value of pi:", pi_value)# 自然对数的底 e
e_value = math.e
print("Value of e:", e_value)
2. 幂和对数
import math# 计算幂
x = 2
y = 3
x_to_the_power_of_y = math.pow(x, y)
print(f"{x} to the power of {y} is {x_to_the_power_of_y}")# 计算自然对数
log_of_x = math.log(x)
print(f"Natural logarithm of {x} is {log_of_x}")# 计算以10为底的对数
log10_of_x = math.log10(x)
print(f"Logarithm base 10 of {x} is {log10_of_x}")
3. 开方
import math# 计算平方根
sqrt_of_x = math.sqrt(x)
print(f"Square root of {x} is {sqrt_of_x}")# 计算任意数的幂次方根
cuberoot_of_x = math.pow(x, 1/3)
print(f"Cube root of {x} is {cuberoot_of_x}")
4. 三角函数
import math# 计算正弦
sin_of_x = math.sin(math.radians(45)) # 注意:角度需要转换为弧度
print(f"Sine of 45 degrees is {sin_of_x}")# 计算余弦
cos_of_x = math.cos(math.radians(45))
print(f"Cosine of 45 degrees is {cos_of_x}")# 计算正切
tan_of_x = math.tan(math.radians(45))
print(f"Tangent of 45 degrees is {tan_of_x}")
5. 舍入函数
import math# 向上取整
ceil_value = math.ceil(4.7)
print(f"Ceiling of 4.7 is {ceil_value}")# 向下取整
floor_value = math.floor(4.7)
print(f"Flooring of 4.7 is {floor_value}")# 四舍五入
round_value = math.round(4.7)
print(f"Rounding of 4.7 is {round_value}")
6. 阶乘
import math# 计算阶乘
factorial_of_5 = math.factorial(5)
print(f"Factorial of 5 is {factorial_of_5}")
7. 最大值和最小值
import math# 计算最大值
max_value = math.fmax(3, 5)
print(f"Maximum of 3 and 5 is {max_value}")# 计算最小值
min_value = math.fmin(3, 5)
print(f"Minimum of 3 and 5 is {min_value}")
math 模块还包含许多其他函数,用于执行各种数学运算。这些函数为开发者提供了一个方便的工具集,用于处理日常的数学计算任务。如果你需要执行更复杂的数学运算或需要用到高级的数学函数,可能需要考虑使用 scipy 或 numpy 等第三方库。
九、urllib模块
urllib 是 Python 的一个标准库模块,用于打开和读取 URL(统一资源定位符)。这个模块提供了一系列的功能,用于处理网络相关的任务,比如打开和读取网页内容、发送 HTTP 请求等。urllib 模块通常与 urllib.request、urllib.error、urllib.parse 和 urllib.robotparser 一起使用,这些模块提供了一系列的功能和异常处理。
下面是一些 urllib 模块中常用功能的使用示例:
1. urllib.request - 打开和读取 URL
from urllib.request import urlopen# 打开 URL 并读取内容
url = 'https://www.example.com'
response = urlopen(url)# 读取网页内容
html_content = response.read()# 打印网页内容
print(html_content.decode('utf-8'))
2. urllib.parse - 解析 URL
from urllib.parse import urlparse, urljoin# 解析 URL
parsed_url = urlparse('https://www.example.com/path?query=value#fragment')
print(parsed_url)# 构建 URL
base_url = 'https://www.example.com/path'
relative_url = 'subpath?query=value'
absolute_url = urljoin(base_url, relative_url)
print(absolute_url)
3. urllib.error - 异常处理
from urllib.request import urlopen
from urllib.error import URLError, HTTPErrorurl = 'https://www.example.com/nonexistent'try:response = urlopen(url)
except URLError as e:print(f'We failed to reach a server.')print(f'Reason: {e.reason}')
except HTTPError as e:print(f'The server couldn\'t fulfill the request.')print(f'Error code: {e.code}')print(f'Error message: {e.read()}')
4. urllib.robotparser - 读取和解析 robots.txt 文件
from urllib.robotparser import RobotFileParser# 创建机器人解析器对象
parser = RobotFileParser()# 设置要解析的 robots.txt 文件的 URL
parser.set_url('https://www.example.com/robots.txt')# 检查特定用户代理是否可以访问某个路径
user_agent = 'mybot/1.0'
path = '/some/path'
if parser.can_fetch(user_agent, path):print(f'{user_agent} can fetch {path}')
else:print(f'{user_agent} cannot fetch {path}')
请注意,urllib 模块的功能相对基础,对于更复杂的 HTTP 请求(如 POST 请求、设置 headers、处理 cookies 等),你可能需要使用更高级的库,如 requests。requests 库提供了更友好和强大的 API,使得发送 HTTP 请求变得更加简单和直观。
十、相关链接
- Python下载安装中心
- Python官网
- Python软件下载
- 「Python系列」Python简介及案例
- 「Python系列」Python基础语法/数据类型
- 「Python系列」Python解释器
- 「Python系列」Python运算符
- 「Python系列」Python数据结构
- 「Python系列」Python元组
- 「Python系列」Python集合
- 「Python系列」Python列表
相关文章:
「Python系列」Python标准库
文章目录 一、 os 模块:文件和目录操作二、 sys 模块:与Python解释器交互三、 datetime 模块:日期和时间处理四、 json 模块:处理JSON数据五、 re 模块:正则表达式六、 time模块1. 获取当前时间2. 延迟执行(…...
虚拟列表【vue】等高虚拟列表/非等高虚拟列表
文章目录 1、等高虚拟列表2、非等高虚拟列表 1、等高虚拟列表 参考文章1 参考文章2 <!-- eslint-disable vue/multi-word-component-names --> <template><divclass"waterfall-wrapper"ref"waterfallWrapperRef"scroll"handleScro…...
【MySQL】如何理解索引(高频面试点)
一、前言 首先这个博客会介绍一些关于MySQL中索引的基本内容以及一些基本的语法,当然里面也会有些常见的面试题的解答。 二、关于索引 1、概念 索引是一种能够帮助MySQL高效的去磁盘检索数据的一种数据结构。在MySQL的Innodb存储引擎中呢,采用的是B树的…...
NXP实战笔记(四):S32K3xx如何产生中心对称三相六路波形
目录 1、概述 1.1、理论基础 2、RTD实现 2.1、Emios时基配置 2.1.1、EmiosMcl 2.1.2、EmiosCommon 2.2、Emios PWM配置 2.3、TRGMUX 2.4、LCU 2.5、外设信号配置 3、代码实现 4、测试结果 1、概述 电机控制中需要产生三相六路SVPWM进行占空比与周期调制,怎么通过RT…...
关于uniapp H5应用无法在触摸屏正常显示的处理办法
关于uniapp H5应用无法在触摸屏正常显示的处理办法 1、问题2、处理3、建议 1、问题 前几天, 客户反馈在安卓触摸大屏上无法正确打开web系统(uni-app vue3开发的h5 应用),有些页面显示不出内容。该应用在 pc 端和手机端都可以正常…...
Stable Diffusion 3 发布,AI生图效果,再次到达全新里程碑!
AI生图效果,再次到达全新里程碑! Prompt:Epic anime artwork of a wizard atop a mountain at night casting a cosmic spell into the dark sky that says "Stable Diffusion 3" made out of colorful energy 提示(意译…...
单例模式怎样实现单例(独例)?
在类定义中加入私有属性 __init__flag Ture,在随后的初始化处理中,判断该属性为真时进行相应的初始化操作,否则,跳过相应的初始化操作。这个机制,保证在进行后续的调用时,不再占用额外的内存开销。 当然了,…...
MySQL——基础内容
目录 第01章_数据库概述 关系型数据库(RDBMS)——表、关系模型 非关系型数据库(非RDBMS) 表、记录、字段 表的关联关系 一对一关联 一对多关系 多对多 自我引用 第02章_MySQL环境搭建 登录命令 常用命令 show databases; create database use 数据库名 show tables 第03章…...
node 之 初步认识
思考:为什么JavaScript可以在浏览器中被执行 代执行的js代码——JavaScript解析引擎 不同的浏览器使用不同的JavaScript解析引擎 Chrome 浏览器 》 V8 Firefox浏览器 》OdinMonkey(奥丁猴) Safri浏览器 》JSCore IE浏览器 》Chakra(查克拉) e…...
css复习
盒模型相关: border:1px solid red (没有顺序) 单元格的border会发生重叠,如果不想要重叠设置 border-collapse:collapse (表示相邻边框合并在一起) padding padding影响盒子大小的好处使用 margin应用: 行内或行内块元素水…...
HTML5和CSS3提高
一、HTML5的新特性 增加了一些新的标签,新的表单,新的表单属性,IE9以上版本的浏览器才支持 注意: 这些语义化标准主要针对搜索引擎的 新标签可以使用多次 在IE9中需要把这些元素转化为块级元素 新增的多媒体标签 主要包含两个…...
感受2024生物发酵展示会-明章机械
参展企业介绍 温州明章机械有限公司是一家专业从事搅拌传动装置机械密封,减速机,机架,联轴器及相关配件。设计、开发及生产的服务型高新技术企业公司,座落于浙江省温州市瓯海区娄桥镇高新工业园区豪新路42号,交通位置…...
算法打卡day1|数组篇|Leetcode 704.二分查找、27.移除元素
数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合,可以方便的通过下标索引的方式获取到下标下对应的数据。 1.数组下标都是从0开始的。 2.数组内存空间的地址是连续的。 正是因为数组的在内存空间的地址是连续的,所以我们在删除或者增添…...
什么是高阶组件
高阶组件(HOC)是 React 中用于复用组件逻辑的一种高级技巧。简单来说,高阶组件就是一个函数,该函数接受一个组件作为参数,并返回一个新的组件。这个新的组件会使用你传给它的组件作为子组件。 高阶组件并不是真的组件…...
python实现裂区试验方差分析
方差分析(Analysis of Variance,ANOVA)是一种统计方法,用于比较三个或三个以上组别的平均值是否存在显著差异。它通过比较组内变异和组间变异的大小来判断组别间的平均值是否有显著差异。 方差分析通常用于以下情况: …...
Vue v-for、v-if、v-show常见问题
vue使用v-for遍历对象时,是按照什么顺序遍历的?如何保证顺序? 会先判断对象是否存在iterator接口,如果有循环执行next()方法。 没有iterator的情况下,会调用Object.Keys()方法,在不同的浏览器中ÿ…...
GPT技术在学术研究中的革命性应用:开启论文创作新篇章
在学术界,撰写高质量的论文一直是一个挑战性的任务,它不仅需要深厚的专业知识,还要求良好的文献综述能力、数据分析技巧以及清晰的表达能力。近年来,随着人工智能技术的飞速发展,尤其是生成式预训练变换器(…...
【K8s】-- 描述容器中 pod 的状态
命令:kubectl describe pod -n 你的namespace名称 pod 名称 举例:kubectl describe pod -n my-flink --context prod-5 test-record-all-new-mc-taskmanager-1-1 Name: test-record-all-new-mc-taskmanager-1-1 Namespace: ky-flink Pri…...
使用yolo-seg模型实现自定义自动动态抠图
yolov8导航 如果大家想要了解关于yolov8的其他任务和相关内容可以点击这个链接,我这边整理了许多其他任务的说明博文,后续也会持续更新,包括yolov8模型优化、sam等等的相关内容。 YOLOv8(附带各种任务详细说明链接) …...
FairyGUI × Cocos Creator 3.x 场景切换
前言 前文提要: FariyGUI Cocos Creator 入门 FairyGUI Cocos Creator 3.x 使用方式 个人demo:https://gitcode.net/qq_36286039/fgui_cocos_demo_dust 个人demo可能会更新其他代码,还请读者阅读本文内容,自行理解并实现。 官…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
