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

news2024/11/20 8:27:25

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

文章目录

    • :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')

在这里插入图片描述

以上。

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

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

相关文章

什么是Milvus

原文出处:https://www.yii666.com/blog/393941.html 什么是Milvus Milvus 是一款云原生向量数据库,它具备高可用、高性能、易拓展的特点,用于海量向量数据的实时召回。 Milvus 基于 FAISS、Annoy、HNSW 等向量搜索库构建,核心是…

开发工具Eclipse的使用

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Eclipse使用的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.Eclipse是什么 二.使用Eclipse的…

OLED透明屏选购指南:性能、品牌与预算的平衡

引言:OLED透明屏作为一种创新的显示技术,正在迅速发展并广泛应用于各个领域。 然而,面对市场上琳琅满目的OLED透明屏产品,如何选择适合自己需求的高品质产品成为了采购者们的重要任务。 对此,尼伽将为您提供一份OLED…

webshell链接工具-Behinder(冰蝎)

“冰蝎”动态二进制加密网站管理客户端 项目地址: https://github.com/rebeyond/Behinder

大模型“瘦身”进手机 下一个iPhone时刻将至?

一股“端侧大模型”浪潮正在涌来。华为、高通等芯片巨头正探索将AI大模型植入端侧,让手机实现新一代物种进化。 相比ChatGPT、Midjourney等AI应用依赖云端服务器提供服务,端侧大模型主打在本地实现智能化。它的优势在于能够更好地保护隐私,同…

以太网UDP协议(十一)

目录 一、端口号 二、UDP 一、端口号 端口号,用来识别同一台计算机中进行通信的不同应用程序,也别成为程序地址。 备注:端口号由其使用的传输层协议决定。因此,不同的传输协议可以使用相同的端口号。即TCP和UDP可以同时使用相同…

php实现登录的例子

界面&#xff1a; 登录界面login.html代码&#xff1a; <!DOCUMENT html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"…

css的transform样式计算-第一节

本文作者为 360 奇舞团前端开发工程师 引言 在使用 css 样式进行样式的缩放、旋转等设置时&#xff0c;思考了一下它的较浅层的原理&#xff0c;恩&#xff0c;这个阶段都 是一些初高的数学计算&#xff0c;从新看这里的时候顺便捡了捡初高中的数学&#xff0c;比如三角函数之类…

重生之我要学C++第七天(匿名对象、内部类)

构造函数的隐式类型转化 1.单参数构造函数隐式类型转换 来看下面的代码 #include<iostream> using namespace std; class A { public:A(int x){_a x;} private:int _a; }; int main() {A a 3;return 0; } 此处这句代码 A a 3; 对于这里&#xff0c;编译完全正确&…

【Java从0到1学习】07 Java异常

尽管人人希望自己身体健康&#xff0c;处理的事情都能顺利进行&#xff0c;但在实际生活中总会遇到各种状况&#xff0c;比如感冒发烧&#xff0c;工作时电脑蓝屏、死机等。同样&#xff0c;在程序运行的过程中&#xff0c;也会发生各种非正常状况&#xff0c;比如程序运行时磁…

工作区与GOPATH

在学习go语言时&#xff0c;我们会从官网下载go语言的二进制包&#xff0c;然后解压并安装到某个目录&#xff0c;最后会配置环境变量&#xff0c;通过输入命令go version来验证是否安装成功。 配置了path环境后&#xff0c;我们还需要再配置3个环境变量&#xff0c;GOROOT、G…

Stable Diffusion - 哥特 (Goth) 风格服装与背景的 LoRA 配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132177882 图像来源于 Goth Clothing 的 LoRA 效果&#xff0c;配合哥特 (Goth) 风格服饰的相关提示词。 测试模型&#xff1a;DreamShaper 8 哥…

websocket+node实现直播(弱鸡版)

心血历程 这部分主要是写在写这些的时候遇到的问题以及换思路的过程&#xff0c;可以之间看正文 在之前我也写过直播功能&#xff0c;并且与websocket相结合实现了直播弹幕。只不过直播是使用的腾讯云的&#xff0c;而不是手写的直播推流拉流&#xff0c;这次又有一个新的项目…

百川智能发布首个530亿参数闭源大模型,今年追上GPT-3.5

4月官宣创业&#xff0c;6月15日发布第一款7B开源模型&#xff0c;7月11日发布第二款13B、130亿参数开源模型。 平均保持2个月一个版本发布速度&#xff0c;8月8日&#xff0c;百川智能发布了创业以来的首个530亿参数闭源大模型——Baichuan-53B&#xff08;以下简称“53B”&a…

运维作业5

一.基于 CS 7 构建 LVS-DR 群集。 1.lvs安装ipvsadm [rootnode ~]# yum install -y ipvsadm 2.配置lvs虚拟ip&#xff08;vip&#xff09; [rootnode ~]# ifconfig ens32:200 192.168.72.200 netmask 255.255.255.0 up 客户端测试&#xff1a; 3.在两台rs上安装httpd 4.两台rs建…

SpringBoot3之Web编程

标签&#xff1a;Rest.拦截器.swagger.测试; 一、简介 基于web包的依赖&#xff0c;SpringBoot可以快速启动一个web容器&#xff0c;简化项目的开发&#xff1b; 在web开发中又涉及如下几个功能点&#xff1a; 拦截器&#xff1a;可以让接口被访问之前&#xff0c;将请求拦截…

Oracle 聚合拼接的常用方式

Oracle常用函数&#xff1a;Oracle Database SQL Language Reference, 12c Release 2 (12.2) 1 listagg LISTAGG Syntax Description of the illustration listagg.eps (listagg_overflow_clause::, order_by_clause::, query_partition_clause::) listagg_overflow_claus…

【C++基础(九)】C++内存管理--new一个对象出来

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; C内存管理 1. 前言2. new2.1 new的使用方法2.2 …

RestTemplate发送请求携带文件

在工作上遇到这样一个需求&#xff0c;就是调用我们公司的AI平台&#xff0c;将图片文件发送给他们&#xff0c;他们进行解析然后返回解析结果。 首先用python进行调用一次&#xff0c;发送捕获的接口是这样的&#xff1a; 那么用java代码该如何组装这个请求发送过去呢&#xf…

MIT6.006 课程笔记P1 - 思考如何进行 PeakFinding

文章目录 寻找峰值 peak暴力算法分而治之从1D到2D朴素算法Attemp#2 寻找峰值 peak 给出一个数组 a b c d e f g h i 并给予数字 index 1 2 3 4 5 6 7 8 9 那么如果某个数字是 peak &#xff0c;那么他将 大于等于左边的数 且 大于等于右边的数 或者 a > b 这里的 a 也是峰值…