【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.0

print(math.ceil(3.7)) # 向上取整,输出4
print(math.floor(3.7)) # 向下取整,输出3

print(math.sin(math.pi/2)) # 正弦函数,输出1.0
print(math.cos(math.pi)) # 余弦函数,输出-1.0
print(math.tan(0)) # 正切函数,输出0.0

print(math.log(10)) # 自然对数函数,默认底数为e,输出2.302585092994046
print(math.log10(100)) # 以10为底的对数函数,输出2.0

print(math.degrees(math.pi/2)) # 弧度转角度,输出90.0
print(math.radians(180)) # 角度转弧度,输出3.141592653589793

print(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')

在这里插入图片描述

以上。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue3过滤输入框首尾空格

vue3过滤输入框首尾空格 在 directive文件夹下 新建 trim.ts 文件 // trim.ts 文件 import { App } from "vue"function getInput(el: { tagName: string; querySelector: (arg0: string) > any }) {let inputEleif (el.tagName ! INPUT) {inputEle el.queryS…

如何加载模型YOLOv8 ONNXRuntime

YOLOv8 是 YOLO(You Only Look Once)目标检测系统的最新版本(v8)。YOLO 是一种实时、一次性目标检测系统,旨在在网络的单次前向传递中执行目标检测,使其快速高效。YOLOv8是之前YOLO模型的改进版本,具有更高的精度和更快的推理速度。 ONNX(开放神经网络交换)是一种表示…

《每天5分钟玩转kubernetes》读书笔记

笔记 概念 Pod是脆弱的,但应用是健壮的。 kubelet运行在Cluster所有节点上,负责启动Pod和容器。kubeadm用于初始化Cluster。kubectl是k8s命令行工具。通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件。 …

Maven【入门笔记】

Maven 解决版本依赖的问题 https://www.liaoxuefeng.com/wiki/1252599548343744/1309301146648610 如果没有项目管理工具,在开发项目的时候,我们需要手动管理依赖包,需要管理依赖包的版本、去找到并下载依赖包、还有依赖包所依赖的包 等等。…

【C语言进阶】数据的存储----浮点型篇

🍁 博客主页:江池俊的博客 💫收录专栏:C语言—探索高效编程的基石 💻 其他专栏:数据结构探索 ​💡代码仓库:江池俊的代码仓库 🎪 社区:GeekHub 🍁 如果觉得博…

途游游戏 x 极狐GitLab “通关” DevOps :单元测试从无到优,覆盖率 0→80%

目录 4 个工具孤岛 → 极狐GitLab 全家桶, 被动的「人找进度」 → 高效的「进度找人」 把 Code Review 做扎实 代码质量「向左移」,修复成本「往下降」 从无到「优」 自动执行单元测试,覆盖率 0→80% 你喜欢玩游戏吗? 最近…

IE浏览器,和Edge浏览器

目录 一.IE浏览器(前世今生) 1.什么是IE浏览器? 2.IE浏览器发展历程 3.IE浏览器在早些年为什么这么流行 4.ie浏览器为什么被停用? 5.IE浏览器无法适应如今的Web发展原因 二.Edge(发展) 1.什么是Edge浏览器&…

docker【安装、存储、镜像、仓库、网络、监控】

docker-0110.0.0.51docker-0210.0.0.52docker-0310.0.0.53 【1】docker安装 docker-01 [rootdocker-01 ~]# vim /etc/yum.conf [main] cachedir/var/cache/yum/$basearch/$releasever keepcache1 debuglevel2 logfile/var/log/yum.log exactarch1 obsoletes1 gpgcheck1 plugin…

k8s ingress获取客户端客户端真实IP

背景 在Kubernetes中,获取客户端真实IP地址是一个常见需求。这是因为在负载均衡架构中,原始请求的源IP地址会被替换成负载均衡器的IP地址。 获取客户端真实IP的需求背景包括以下几点: 安全性:基于客户端IP进行访问控制和认证授…

做好“关键基础设施提供商”角色,亚马逊云科技加快生成式AI落地

一场关于生产力的革命已在酝酿之中。全球管理咨询公司麦肯锡在最近的报告《生成式人工智能的经济潜力:下一波生产力浪潮》中指出,生成式AI每年可能为全球经济增加2.6万亿到4.4万亿美元的价值。在几天前的亚马逊云科技纽约峰会中,「生成式AI」…

熟练掌握ChatGPT解决复杂问题——学会提问

目录 引言 一、5W1H分析法 1. 简单的问题(what、where、when、who) 2.复杂的问题(why、how) 2.1 为什么(Why)——原因 2.2 方式 (How)——如何 二、如何提问得到更高质量的答案…

pycharm运行pytest无法实时输出信息

需要去掉控制台输出。根据查询相关信息显示pycharm运行pytest无法实时输出信息,需要去掉pycharm里面的运行模式,点击减号,再点击加号,添加python执行文件即可实时输出信息。 问题描述: 使用pycharm运行代码时&#x…

uniapp 持续获取定位(登录状态下才获取)(不采用定时器)(任意页面都可监听定位改变)

基于上次文章做了优化和改良,保证在登录状态下才获取定位信息 uniapp 小程序实时且持续获取定位信息(全局设置一次)(单页面监听定位改变)(不采用定时器)_uniapp小程序定位_前端小胡兔的博客-CSDN博客本篇文章实现了uniapp 微信小程序实时获取定位信息,小程序打开即可持续获取定…

2023年第四届“华数杯”数学建模思路 - 案例:退火算法

## 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 退火算法原理 1.1 物理背景 在热力学上,退火(annealing)现象指物体逐渐降温的物理现象,温度愈低&#…

C++ 数组作为函数参数

数组元素和数组名都可以作为函数的参数以实现函数间数据的传递和共享。 可以用数组元素作为调用函数时的实参,这与使用该类型的一个变量(或对象)作实参是完全相同的。 如果使用数组名作为函数的参数,则实参和形参都应该是数组名…

企业上云实施路线图

企业上云步骤主要分为规划、设计、实施、验证、运维五个阶段。https://articles.e-works.net.cn/cloud/article144684.htm

XXL-JOB定时任务框架(Oracle定制版)

特点 xxl-job是一个轻量级、易扩展的分布式任务调度平台,能够快速开发和简单学习。开放源代码并被多家公司线上产品使用,开箱即用。尽管其确实非常好用,但我在工作中使用的是Oracle数据库,因为xxl-job是针对MySQL设计的&#xff…

group normalization

1、 Theory look for this link for more information, actually only this image can illustrate the group normalization.you can ignore the rest of this artical. 2、 Code check this link for detailed about the formulation and the theory of the group normalzi…

问题解决和批判性思维是软件工程的重要核心

软件工程的重心在于问题解决和批判性思维(合理设计和架构降低复杂度),而非仅局限于编程。 许多人误以为软件工程就只是编程,即用编程语言编写指令,让计算机按照这些指令行事。但实际上,软件工程的内涵远超…

git 公钥密钥 生成与查看

1.什么是公钥 很多服务器都是需要认证的,ssh认证是其中的一种。在客户端生成公钥,把生成的公钥添加到服务器,你以后连接服务器就不用每次都输入用户名和密码了。 很多git服务器都是用ssh认证方式,你需要把你生成的公钥发送给代码仓…