「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可能会更新其他代码,还请读者阅读本文内容,自行理解并实现。 官…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...

Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...

海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...