Python标准库常用模块的典型用法介绍与案例

news2025/1/9 17:10:24

目录

1. os模块

典型用法

案例

2. sys模块

典型用法

案例

3. datetime模块

典型用法

案例

4. re模块

典型用法

案例

5. json模块

典型用法

案例

6. random模块    

典型用法    

  案例   

 7. collections模块

典型用法

案例

总结



Python作为一门功能强大的编程语言,其标准库(Standard Library)提供了丰富的模块,涵盖了从文件操作、数据处理到网络编程等各个方面。这些模块不仅功能强大,而且易于使用,为开发者提供了极大的便利。本文将详细介绍Python标准库中一些常用模块的典型用法,并通过实际案例帮助新手朋友理解和掌握。

1. os模块

os模块是Python中与操作系统交互的接口,提供了许多与文件和目录操作相关的函数。以下是一些典型用法和案例。

典型用法

  • 文件和目录操作:如创建、删除、重命名文件和目录。
  • 环境变量访问:获取和设置环境变量。
  • 进程管理:执行外部命令和脚本。

案例

import os  
  
# 获取当前工作目录  
current_dir = os.getcwd()  
print(f"当前工作目录: {current_dir}")  
  
# 创建一个新目录  
new_dir = "my_directory"  
os.mkdir(new_dir)  
print(f"创建目录: {new_dir}")  
  
# 列出当前目录下的所有文件和目录  
print("文件和目录列表:")  
for item in os.listdir(current_dir):  
    print(item)  
  
# 删除新创建的目录  
os.rmdir(new_dir)  
print(f"删除目录: {new_dir}")

2. sys模块

sys模块提供了与Python解释器交互的功能,常用于处理Python的运行时环境。

典型用法

  • 命令行参数处理:通过sys.argv获取命令行参数。
  • 环境变量和路径操作:通过sys.path和sys.modules管理模块路径和已加载的模块。
  • 程序退出:通过sys.exit()退出程序。

案例

import sys  
  
# 获取命令行参数  
print(f"命令行参数: {sys.argv}")  
  
# 退出程序  
sys.exit(0)  # 正常退出

3. datetime模块

datetime模块提供了处理日期和时间的类和函数,是Python中处理时间相关任务的标准方式。

典型用法

  • 获取当前日期和时间。
  • 日期和时间的计算:如时间差计算。
  • 日期和时间的格式化。

案例

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

4. re模块

re模块提供了正则表达式的支持,用于字符串的搜索、替换和匹配。

典型用法

  • 字符串匹配:检查字符串是否符合某种模式。
  • 字符串查找:在字符串中查找符合模式的子串。
  • 字符串替换:替换字符串中符合模式的部分。

案例

import re  
  
# 检查电子邮件地址是否有效  
def is_valid_email(email):  
    pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'  
    return re.match(pattern, email) is not None  
  
print(is_valid_email('example@example.com'))  # 输出: True  
print(is_valid_email('not an email'))  # 输出: False

5. json模块

json模块用于处理JSON数据,JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。

典型用法

  • 编码:将Python对象转换成JSON字符串。
  • 解码:将JSON字符串转换成Python对象。

案例

import json  
  
# 将Python对象编码为JSON字符串  
data = {'name': 'John', 'age': 30, 'city': 'New York'}  
json_str = json.dumps(data,indent=4)
print(f"JSON字符串:\n{json_str}")

#将JSON字符串解码为Python对象
json_obj = json.loads(json_str)
print(f"解码后的Python对象:\n{json_obj}")

#写入JSON文件
with open('data.json', 'w') as f:
json.dump(data, f, indent=4)

#从JSON文件读取
with open('data.json', 'r') as f:
loaded_data = json.load(f)
print(f"从文件加载的Python对象:\n{loaded_data}")

6. random模块    

`random`模块用于生成随机数,这在模拟、游戏开发、测试等场景中非常有用。    

典型用法    

  • 生成随机浮点数。  
  • 生成随机整数。  
  • 随机选择:从序列中随机选择一个或多个元素。  
  • 随机打乱:随机打乱序列中元素的顺序。  

  
案例  
 

import random  
  
# 生成随机浮点数  
print(f"随机浮点数: {random.random()}")  
  
# 生成指定范围内的随机整数  
print(f"1到10之间的随机整数: {random.randint(1, 10)}")  
  
# 从列表中随机选择一个元素  
items = ['apple', 'banana', 'cherry']  
print(f"随机选择的元素: {random.choice(items)}")  
  
# 从列表中随机选择多个不重复的元素  
print(f"随机选择的多个元素: {random.sample(items, 2)}")  
  
# 随机打乱列表  
random.shuffle(items)  
print(f"打乱后的列表: {items}")

 7. collections模块

collections模块提供了许多有用的容器数据类型,这些类型是对Python内置容器(如列表、字典等)的补充。

典型用法

  • deque:双端队列,支持从两端快速添加(append)和弹出(pop)元素。
  • Counter:计数器,用于计数可哈希对象。
  • defaultdict:具有默认值的字典,当访问的键不存在时,会返回一个默认值而不是抛出KeyError。
  • OrderedDict:保持元素插入顺序的字典。

案例

from collections import deque, Counter, defaultdict, OrderedDict  
  
# deque  
dq = deque([1, 2, 3])  
dq.append(4)  
dq.appendleft(0)  
print(f"deque: {dq}")  
  
# Counter  
c = Counter(['a', 'b', 'a', 'c', 'b', 'a'])  
print(f"Counter: {c}")  
  
# defaultdict  
dd = defaultdict(int)  
dd['key1'] = 1  
print(f"defaultdict访问不存在的键: {dd['key2']}")  # 输出: 0  
  
# OrderedDict  
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])  
od.move_to_end('b')  
print(f"OrderedDict: {od}")

总结

以上介绍了Python标准库中一些常用模块的典型用法,并通过实际案例展示了它们在实际编程中的应用。这些模块不仅功能强大,而且易于学习和使用,是Python编程中不可或缺的工具。希望本文能够帮助新手朋友们更好地理解和掌握Python标准库,从而在编程实践中更加得心应手。随着对Python的深入学习,你将发现更多有用的模块和技巧,不断提升自己的编程能力。

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

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

相关文章

Redis基础教程(十八):Redis管道技术

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

仕考网:公务员考试面试时间一般多长?

公务员考试主要分为笔试与面试两个阶段,其中面试是笔试通过的下一关,面试的具体安排通常由相关考试机构或招录单位负责发布并通知考生。 公务员面试的持续时间一般在30分钟至1小时之间,具体时长可能因地区和招录单位的不同而有所变化。常见的…

交通气象站:保障道路安全的智慧之眼

随着社会的快速发展,交通运输日益繁忙,道路安全成为公众关注的焦点。在这个背景下,交通气象站作为保障道路安全的重要设施,正发挥着越来越重要的作用。它们不仅为交通管理部门提供及时、准确的气象信息,也为广大驾驶员…

中职网络安全B模块Cenots6.8数据库

任务环境说明: ✓ 服务器场景:CentOS6.8(开放链接) ✓ 用户名:root;密码:123456 进入虚拟机操作系统:CentOS 6.8,登陆数据库(用户名:root&#x…

Gymnasium 借游戏来学习人工智能

既然有了免费的linux系统GPU,干脆演示一下使用drivecolab套件来训练模型。 !apt-get install -y build-essential swig !pip install box2d-py !pip install gymnasium[all] !pip install gymnasium[atari] gymnasium[accept-rom-license] !pip install stable_bas…

限流组件都有哪些

限流组件有很多,下面是一些常见的限流组件: 1.Sentinel:轻量级的流量控制、熔断降级组件,适用于分布式系统间的流量控制、负载保护和系统防护。 1.Guava RateLimiter:Google 的 Guava 库提供的限流器,基于令…

中职网络安全B模块渗透测试system0016

访问http://靶机IP/web1/,获取flag值,Flag格式为flag{xxx}; 可能会跳转8000端口删除进入80端口 进入后点击侦查一下,这里乱码了,我们点击查看是一个柯南,web但这是一个web题目肯定不是隐写术,所以说题目的…

GuLi商城-商品服务-API-品牌管理-OSS获取服务端签名

新建第三方服务: 引入common 把common中oss的依赖都拿到第三方服务中来 配置文件: 加上nacos注解:<

中职网络安全B模块渗透测试server2380

使用nmap扫描添加参数-sV Flag:2.4.38 添加参数-A不然扫不全 &#xff08;这两题可以直接加-sV -A&#xff09; Flag: 4.3.11-Ubuntu 根据nmap扫描发现系统为ubuntu系统&#xff0c;ubuntu操作系统在某些版本中默认包含一个名为"ubuntu"的用户帐户。这是为了方…

71.WEB渗透测试-信息收集- WAF、框架组件识别(11)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;70.WEB渗透测试-信息收集- WAF、框架组件识别&#xff08;10&#xff09;-CSDN博客 如果有…

计算机的错误计算(二十六)

摘要 结合计算机的错误计算&#xff08;二十四&#xff09;中的 Maple 环境下的计算过程&#xff0c;&#xff08;二十五&#xff09;讨论了&#xff08;不&#xff09;停机问题。事实上&#xff0c;其它数学软件比如 Mathematica 也存在该问题。 &#xff08;不&#xff09;停…

解读网络安全公司F5:助企业高效简化多云和应用部署

伴随企业加速数字化转型工作、扩展到新的基础设施环境并采用微服务架构&#xff0c;企业正拥抱混合和多云基础设施所带来的灵活性。Ernst & Young调查数据显示&#xff0c;84%的企业正处于向现有网络安全解决方案套件添加多种新技术的早期阶段。企业同样意识到&#xff0c;…

leetcode--验证二叉搜索树

leetcode地址&#xff1a;验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左 子树 只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必…

【Windows11】Edge卡顿问题精准解决

目录 背景问题解决 背景 本机配置&#xff1a; CPU&#xff1a;i5-13600KF 内存&#xff1a;威刚 XPG龙耀 D300G 32G 6400 D5 固态&#xff1a;威刚 XPG翼龙 S70B 1T PCIe4.0 7400MB/s 带缓存 理论上这个配置多开个Edge轻轻松松。 已经尝试网上各种方法未果&#xff0c;包括不…

12-阿里云单细胞处理-PBMC(by-jmzeng)

scRNA_10X/seurat-v2/sup-patient1-PBMC.Rmd at master jmzeng1314/scRNA_10X (github.com) s04-运行seurat流程处理一万个单细胞转录组数据并自动化出报告_哔哩哔哩_bilibili #section 3已更新#「生信技能树」单细胞公开课2021_哔哩哔哩_bilibili 上传读取数据 可以配置租…

Git命令常规操作

目录 常用操作示意图 文件的状态变化周期 1. 创建文件 2. 修改原有文件 3. 删除原有文件 没有添加到暂存区的数据直接 rm 删除即可&#xff1a; 对于添加到暂存区的数据 文件或目录&#xff1a; 4. 重命名暂存区数据 5. 查看历史记录 6. 还原历史数据 恢复过程的原…

[C++初阶]vector的oj

本篇主要式对一些题目的讲解&#xff0c;以便于提高大家对于vector的基本认识。 一、选择题 1.下面这个代码输出的是( ) #include <iostream>#include <vector>using namespace std;int main(void){vector<int>array;array.push_back(100);array.push_bac…

小程序需要进行软件测试吗?小程序测试有哪些测试内容?

在如今移动互联网快速发展的时代&#xff0c;小程序已成为人们生活中不可或缺的一部分。然而&#xff0c;面对日益增长的小程序数量和用户需求&#xff0c;小程序的稳定性和质量问题日益突显。因此&#xff0c;对小程序进行软件测试显得尤为重要。 近期的一项调查显示&#xf…

中文大模型基准测评2024上半年报告

中文大模型基准测评2024上半年报告 原创 SuperCLUE CLUE中文语言理解测评基准 2024年07月09日 18:09 浙江 SuperCLUE团队 2024/07 背景 自2023年以来&#xff0c;AI大模型在全球范围内掀起了有史以来规模最大的人工智能浪潮。进入2024年&#xff0c;全球大模型竞争态势日益加…

基于Unity3D的Rokid AR Glass项目开发环境搭建

初识Rokid AR 一、SDK简介二、准备工作1.软件环境2.硬件环境 三、快速接入SDK1.配置Package Manager2.安装UXR2.0 SDK 四、导入官方Demo进行模拟器测试五、Rokid AR系列教程 一、SDK简介 UXR2.0 SDK是Rokid为Unity开发者提供的AR开发工具包&#xff0c;提供空间定位跟踪、双目…