• Python标准库(Python自带的模块和包)


    一、自带电池

            “自带电池”指python语言的标准库,因为它包含了丰富的功能和工具,几乎可以满足大部分的开发需求,就像一个内置电池一样,所以python标准库被称之为“自带电池”。

    二、操作系统接口

    2.1 OS

    python中的os模块提供了丰富的与操作系统交互的函数。开发人员可以通过os模块提供的函数对文件和目录执行系统命令,以及获取系统信息。

    注:在调用时一定要使用 import os 而不能使用from os import *。这将避免内建的open()函数被os.open()隐式替代。(open和os.open的作用是有很大区别的)

    os模块的常用函数和方法有:

    1. os.name:返回当前操作系统的名称,例如posix表示Linux、Unix或Mac OS X,nt表示Windows。

    2. os.getcwd():返回当前工作目录的路径。

    3. os.chdir(path):改变当前工作目录到指定的路径。

    4. os.listdir(path):返回指定路径下的文件和目录列表。

    5. os.mkdir(path):创建一个新目录。

    6. os.makedirs(path):递归地创建多个新目录。

    7. os.remove(path):删除指定的文件。

    8. os.rmdir(path):删除指定的目录。

    9. os.path.exists(path):判断指定路径是否存在。

    10. os.path.isfile(path):判断指定路径是否是一个文件。

    11. os.path.isdir(path):判断指定路径是否是一个目录。

    12. os.path.join(path1, path2, ...):将多个路径组合成一个路径。

    13. os.path.basename(path):返回路径中的文件名部分。

    14. os.path.dirname(path):返回路径中的目录部分。

    15. os.path.splitext(path):将路径分割成目录部分和扩展名部分。

    示例:

    1. # 使用os模块创建一个新文件夹,并将文件从一个文件夹移动到另一个文件夹
    2. import os
    3. # 创建一个新文件夹
    4. os.mkdir('new_folder')
    5. # 移动文件
    6. src = 'old_folder/file.txt'
    7. dst = 'new_folder/file.txt'
    8. os.rename(src, dst)

    2.2 shutil

    shutil模块是Python的标准库之一,提供了更高级别的文件操作功能。它是os模块的补充,提供了一些更方便的函数来复制、移动、删除文件以及文件夹。

    一些常用的shutil模块函数包括:

    1. shutil.copy(src, dst):将文件从src复制到dst。
    2. shutil.move(src, dst):将文件或文件夹从src移动到dst。
    3. shutil.rmtree(path):递归地删除指定路径下的所有文件和文件夹。
    4. shutil.make_archive(base_name, format, root_dir):创建一个压缩文件。
    5. shutil.unpack_archive(filename, extract_dir):解压缩文件。
    1. # 使用shutil模块复制一个文件,并删除一个文件夹
    2. import shutil
    3. # 复制文件
    4. src = 'old_folder/file.txt'
    5. dst = 'new_folder/file.txt'
    6. shutil.copy(src, dst)
    7. # 删除文件夹
    8. shutil.rmtree('old_folder')

    三、文件通配符

    Python的glob模块提供了一种方便的方法来查找符合特定模式的文件路径。使用glob模块可以使用通配符匹配文件名,例如查找所有以.txt结尾的文件或者所有以特定前缀开头的文件。

    使用glob模块可以实现以下功能:

    1. 查找符合特定规则的文件名:可以使用通配符(如*?)来匹配文件名,以便查找符合特定模式的文件。例如,可以使用*.txt来查找当前目录下所有的txt文件。

    2. 遍历文件夹:可以使用通配符模式来遍历文件夹中的文件和子文件夹。可以使用*来配任意字符,使用**`来匹配任意路径。

    下面是一些常用的glob模块函数和用法:

    1. glob.glob(path):返回一个包含符合指定规则的文件路径名的列表。path参数是一个字符串,可以包含通配符模式。例如,glob.glob('*.txt')将返回当前目录下所有的txt文件路径名的列表。

    2. glob.iglob(path):返回一个生成器,用于遍历符合指定规则的文件路径名。与glob.glob()不同的是,glob.iglob()是惰性生成器,逐个返回匹配的文件路径名,而不是一次性返回所有匹配的文件路径名。

    3. glob.escape(path):返回一个转义后的字符串,用于将特殊字符转义为普通字符。这在使用通配符模式时特别有用,可以确保特殊字符被视为普通字符而不是通配符。

    示例:

    使用glob模块来查找当前目录下所有的txt文件

    1. import glob
    2. txt_files = glob.glob('*.txt')
    3. for file_path in txt_files:
    4. print(file_path)

    三、字符串模式匹配

    re模块是Python的正则表达式模块,提供了一种强大的方法来进行字符串模式匹配和搜索。通过使用正则表达式,可以查找、替换、分割和提取字符串中的特定模式。

    下面是re模块的一些常用函数和方法:

    1. re.match(pattern, string, flags=0): 从字符串的起始位置开始匹配模式,如果匹配成功则返回一个匹配对象,否则返回None。

    2. re.search(pattern, string, flags=0): 在字符串中搜索匹配模式的第一个位置,如果匹配成功则返回一个匹配对象,否则返回None。

    3. re.findall(pattern, string, flags=0): 在字符串中找到匹配模式的所有子串,并以列表的形式返回。

    4. re.finditer(pattern, string, flags=0): 在字符串中找到匹配模式的所有子串,并以迭代器的形式返回。

    5. re.sub(pattern, repl, string, count=0, flags=0): 在字符串中找到匹配模式的子串,并用 repl 替换。如果 count 指定,则最多替换 count 次。

    6. re.split(pattern, string, maxsplit=0, flags=0): 根据模式的匹配项将字符串拆分为列表。

    7. re.compile(pattern, flags=0): 将正则表达式的字符串形式编译为正则表达式对象,可以提高匹配的效率。

    8. 匹配对象的方法:group()返回匹配的字符串,start()返回匹配的起始位置,end()返回匹配的结束位置,span()返回一个元组,包含匹配的起始和结束位置。

    四、数据库连接

    Python的标准库中提供了多个用于数据库连接和操作的模块,如sqlite3、MySQLdb、psycopg2等。这些模块可以用于连接和操作多种类型的数据库,并执行查询、插入、更新和删除操作。

     4.1 sqlite3

    Python标准库中的一个模块,用于操作SQLite数据库。SQLite是一种轻量级的嵌入式数据库,不需要独立的服务器进程,可以直接访问数据库文件。sqlite3模块提供了一系列函数和方法来连接、查询和操作SQLite数据库。

    1. import sqlite3
    2. # 连接到SQLite数据库
    3. conn = sqlite3.connect('example.db')
    4. # 创建一个游标对象
    5. cursor = conn.cursor()
    6. # 创建一个表
    7. cursor.execute('''CREATE TABLE IF NOT EXISTS users
    8. (id INT PRIMARY KEY NOT NULL,
    9. name TEXT NOT NULL,
    10. age INT NOT NULL);''')
    11. # 插入数据
    12. cursor.execute("INSERT INTO users VALUES (1, 'Alice', 25)")
    13. cursor.execute("INSERT INTO users VALUES (2, 'Bob', 30)")
    14. # 查询数据
    15. cursor.execute("SELECT * FROM users")
    16. rows = cursor.fetchall()
    17. for row in rows:
    18. print(row)
    19. # 提交事务并关闭连接
    20. conn.commit()
    21. conn.close()

    4.2  MySQLdb

    是一个第三方模块,用于操作MySQL数据库。MySQLdb模块是Python对MySQL数据库的接口,可以通过该模块连接MySQL数据库服务器,并执行SQL语句进行数据的增删改查操作。

    1. import MySQLdb
    2. # 连接到MySQL数据库
    3. conn = MySQLdb.connect(host='localhost',
    4. user='root',
    5. password='password',
    6. db='test')
    7. # 创建一个游标对象
    8. cursor = conn.cursor()
    9. # 创建一个表
    10. cursor.execute('''CREATE TABLE IF NOT EXISTS users
    11. (id INT PRIMARY KEY NOT NULL,
    12. name VARCHAR(20) NOT NULL,
    13. age INT NOT NULL);''')
    14. # 插入数据
    15. cursor.execute("INSERT INTO users VALUES (1, 'Alice', 25)")
    16. cursor.execute("INSERT INTO users VALUES (2, 'Bob', 30)")
    17. # 查询数据
    18. cursor.execute("SELECT * FROM users")
    19. rows = cursor.fetchall()
    20. for row in rows:
    21. print(row)
    22. # 提交事务并关闭连接
    23. conn.commit()
    24. conn.close()

    4.3 psycopg2

    是一个第三方模块,用于操作PostgreSQL数据库。PostgreSQL是一种开源的关系型数据库管理系统,而psycopg2模块是Python对PostgreSQL数据库的接口,可以通过该模块连接PostgreSQL数据库服务器,并执行SQL语句进行数据的增删改查操作。

    1. import psycopg2
    2. # 连接到PostgreSQL数据库
    3. conn = psycopg2.connect(host='localhost',
    4. user='postgres',
    5. password='password',
    6. dbname='test')
    7. # 创建一个游标对象
    8. cursor = conn.cursor()
    9. # 创建一个表
    10. cursor.execute('''CREATE TABLE IF NOT EXISTS users
    11. (id INT PRIMARY KEY NOT NULL,
    12. name VARCHAR(20) NOT NULL,
    13. age INT NOT NULL);''')
    14. # 插入数据
    15. cursor.execute("INSERT INTO users VALUES (1, 'Alice', 25)")
    16. cursor.execute("INSERT INTO users VALUES (2, 'Bob', 30)")
    17. # 查询数据
    18. cursor.execute("SELECT * FROM users")
    19. rows = cursor.fetchall()
    20. for row in rows:
    21. print(row)
    22. # 提交事务并关闭连接
    23. conn.commit()
    24. conn.close()

    五、网络通讯

    5.1 urllib.request

    urllib.request模块是Python标准库中用于进行HTTP请求的模块。它提供了一种更简单和高级的方式来发送HTTP请求,处理响应以及处理URL。

    urllib.request模块中的主要函数和类包括:

    1. urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, *, cafile=None, capath=None, cadefault=False, context=None): 打开一个URL并返回一个类似文件的对象。可以使用该对象来读取URL的内容。

    2. Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None): 创建一个HTTP请求对象。可以设置请求的URL、数据、头部信息等。

    3. urlretrieve(url, filename=None, reporthook=None, data=None): 下载一个URL的内容,并将其保存到本地文件中。

    4. build_opener(*handlers): 创建一个自定义的URL打开器,可以用于处理特定的URL请求。

    5. ProxyHandler(proxies=None): 创建一个处理代理服务器的处理器。

    使用urllib.request模块进行HTTP请求的基本步骤如下:

    1. 导入urllib.request模块。
    2. 使用urlopen()函数打开一个URL,或者创建一个Request对象。
    3. 可以通过读取返回的类文件对象来获取URL的内容。
    4. 可以使用urlretrieve()函数将URL的内容保存到本地文件中。

    以下是一个简单的示例代码,演示如何使用

    1. import urllib.request
    2. # 打开一个URL并读取内容
    3. response = urllib.request.urlopen('http://www.example.com')
    4. html = response.read()
    5. print(html)
    6. # 下载一个URL的内容并保存到本地文件
    7. urllib.request.urlretrieve('http://www.example.com', 'example.html')

    5.2 socket模块

    Python的socket模块提供了一种在网络上进行通信的方式。使用socket模块,可以创建网络套接字并通过网络发送和接收数据。此外,Python的标准库还提供了其他一些模块,如http.client、urllib等,用于处理HTTP请求和访问Web资源。

    以下是socket模块的一些常用函数和方法:

    1. socket():创建一个socket对象,用于进行网络通信。可以指定协议类型、套接字类型等参数。

    2. bind():绑定一个地址(主机名和端口号)到socket对象上。

    3. listen():开始监听连接请求,使socket对象成为一个服务器端套接字。

    4. accept():接受一个客户端连接请求,并返回一个新的socket对象,用于与客户端进行通信。

    5. connect():与服务器端建立连接,使socket对象成为一个客户端套接字。

    6. send():发送数据到连接的另一端。

    7. recv():接收连接的另一端发送的数据。

    8. close():关闭socket连接。

    9. setsockopt():设置socket的选项。

    示例:

    使用socket模块请求web资源:

    1. import socket
    2. def request_web_resource(host, port, path):
    3. # 创建一个TCP套接字
    4. client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    5. # 建立与服务器的连接
    6. client_socket.connect((host, port))
    7. # 构造HTTP请求
    8. request = f"GET {path} HTTP/1.1\r\nHost: {host}\r\n\r\n"
    9. # 发送HTTP请求
    10. client_socket.sendall(request.encode())
    11. # 接收服务器的响应
    12. response = b""
    13. while True:
    14. data = client_socket.recv(4096)
    15. if not data:
    16. break
    17. response += data
    18. # 关闭连接
    19. client_socket.close()
    20. # 打印服务器的响应
    21. print(response.decode())
    22. # 调用函数请求web资源
    23. request_web_resource("www.example.com", 80, "/index.html")

     

    六、数学运算

    Python的标准库中提供了一些用于数学运算的模块,如math、random等。math模块提供了一些常用的数学函数,如三角函数、指数函数、对数函数等。random模块可以生成随机数,进行随机选择和洗牌操作。

    6.1 math

    math库提供了丰富的数学运算函数,例如常见的对数、三角函数等。(详情点击连接可看)

    示例:

    1. import math
    2. math.cos(math.pi / 4)# 输出:0.70710678118654757
    3. math.log(1024,2)# 输出:10

    6.2 Random

     Random库提供了生成随机数的函数。(函数很多,详见请点击链接)

    通常使用的函数包含以下几种:

    1. random.random(): 返回一个0到1之间的随机浮点数。

    2. random.randint(a, b): 返回一个在指定范围内的随机整数,包括a和b。

    3. random.choice(seq): 从给定的序列中随机选择一个元素。

    4. random.shuffle(seq): 将给定序列中的元素随机排序。

    5. random.sample(population, k): 从给定的总体中随机选择k个不重复的元素。

    6. random.uniform(a, b): 返回一个在指定范围内的随机浮点数,包括a和b。

    7. random.seed(a=None): 初始化随机数生成器的种子。

    展示了如何使用random模块的一些常用函数:

    1. import random
    2. # 生成一个01之间的随机浮点数
    3. print(random.random())
    4. # 生成一个在指定范围内的随机整数
    5. print(random.randint(1, 10))
    6. # 从给定的序列中随机选择一个元素
    7. colors = ['red', 'blue', 'green']
    8. print(random.choice(colors))
    9. # 将给定序列中的元素随机排序
    10. numbers = [1, 2, 3, 4, 5]
    11. random.shuffle(numbers)
    12. print(numbers)
    13. # 从给定的总体中随机选择k个不重复的元素
    14. population = ['apple', 'banana', 'orange', 'grape', 'watermelon']
    15. sample = random.sample(population, 3)
    16. print(sample)
    17. # 生成一个在指定范围内的随机浮点数
    18. print(random.uniform(0.5, 1.5))
    19. # 初始化随机数生成器的种子
    20. random.seed(123)
    21. print(random.random())

    6.3 statistics

    statistics库常用于数理统计,可以计算数据的基本属性(基本统计属性(均值,中位数,方差等)。

    以下是一些常用的statistics模块函数:

    1. mean(data): 计算数据的算术平均值。

    2. median(data): 计算数据的中位数。

    3. mode(data): 计算数据的众数。

    4. stdev(data): 计算数据的标准差。

    5. variance(data): 计算数据的方差。

    6. harmonic_mean(data): 计算数据的调和平均值。

    7. median_low(data): 计算数据的低中位数。

    8. median_high(data): 计算数据的高中位数。

    9. median_grouped(data, interval=1): 计算数据的分组中位数。

    示例:

    1. import statistics
    2. data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    3. # 计算数据的算术平均值
    4. print(statistics.mean(data))
    5. # 计算数据的中位数
    6. print(statistics.median(data))
    7. # 计算数据的众数
    8. print(statistics.mode(data))
    9. # 计算数据的标准差
    10. print(statistics.stdev(data))
    11. # 计算数据的方差
    12. print(statistics.variance(data))
    13. # 计算数据的调和平均值
    14. print(statistics.harmonic_mean(data))
    15. # 计算数据的低中位数
    16. print(statistics.median_low(data))
    17. # 计算数据的高中位数
    18. print(statistics.median_high(data))
    19. # 计算数据的分组中位数
    20. print(statistics.median_grouped(data, interval=2))

    七、日期和时间

    Python的datetime模块提供了处理日期和时间的功能。可以使用datetime模块来创建日期和时间对象,并进行日期和时间的计算、格式化和解析。

    以下是一些常用的datetime模块的类和函数:

    1. datetime.datetime: 表示一个具体的日期和时间,包括年、月、日、时、分、秒和微秒。

    2. datetime.date: 表示一个具体的日期,包括年、月、日。

    3. datetime.time: 表示一个具体的时间,包括时、分、秒和微秒。

    4. datetime.timedelta: 表示两个日期或时间之间的差值,可以用于日期和时间的加减运算。

    5. datetime.now(): 返回当前的日期和时间。

    6. datetime.today(): 返回当前的日期。

    7. datetime.strptime(date_string, format): 将一个字符串解析为日期或时间对象,需要指定解析格式。

    8. datetime.strftime(format): 将一个日期或时间对象格式化为字符串,需要指定格式化格式。

    示例:

    1. import datetime
    2. # 获取当前的日期和时间
    3. now = datetime.datetime.now()
    4. print(now)
    5. # 获取当前的日期
    6. today = datetime.datetime.today().date()
    7. print(today)
    8. # 创建一个指定日期和时间的datetime对象
    9. dt = datetime.datetime(2023, 9, 19, 14, 30, 0)
    10. print(dt)
    11. # 计算两个日期之间的差值
    12. delta = datetime.timedelta(days=7)
    13. new_date = today + delta
    14. print(new_date)
    15. # 将字符串解析为日期对象
    16. date_string = "2023-09-19"
    17. date = datetime.datetime.strptime(date_string, "%Y-%m-%d")
    18. print(date)
    19. # 将日期对象格式化为字符串
    20. formatted_date = date.strftime("%Y-%m-%d")
    21. print(formatted_date)

     

    八、数据压缩

    Python的标准库中提供了一些用于数据压缩和解压缩的模块,如gzip、zipfile等。这些模块可以用于创建和解压缩压缩文件,如gzip压缩文件、ZIP压缩文件等。

    1.gzip模块:gzip模块提供了gzip文件的压缩和解压缩功能。可以使用gzip模块中的GzipFile类来创建gzip文件对象,然后使用write()方法来写入压缩数据,最后使用close()方法关闭文件。

    1. import bz2
    2. # 压缩文件
    3. with open('file.txt', 'rb') as f_in:
    4. with bz2.open('file.txt.bz2', 'wb') as f_out:
    5. f_out.write(f_in.read())
    6. # 解压文件
    7. with bz2.open('file.txt.bz2', 'rb') as f_in:
    8. with open('file.txt', 'wb') as f_out:
    9. f_out.write(f_in.read())

     2.zipfile是Python标准库中用于处理ZIP文件的模块。它提供了一种简单的方式来创建、读取和修改ZIP文件。

    1. import zipfile
    2. # 创建zip文件
    3. with zipfile.ZipFile('example.zip', 'w') as zf:
    4. zf.write('file1.txt')
    5. zf.write('file2.txt')
    6. #解压zip文件
    7. with zipfile.ZipFile('example.zip', 'r') as zf:
    8. zf.extractall('extracted_files')
    9. #读取zip文件
    10. with zipfile.ZipFile('example.zip', 'r') as zf:
    11. file_list = zf.namelist()
    12. file_info = zf.getinfo('file1.txt')
    13. with zf.open('file1.txt') as f:
    14. content = f.read()
    15. #修改zip文件
    16. with zipfile.ZipFile('example.zip', 'a') as zf:
    17. zf.write('file3.txt')
    18. zf.extract('file1.txt', 'extracted_files')
    19. zf.remove('file2.txt')

    九、性能测量

    Python的标准库中提供了一些用于性能测量和优化的模块,如timeit、profile等。timeit模块用于测量代码的执行时间,profile模块用于分析代码的性能瓶颈。这些模块可以帮助开发者找到代码中的性能问题,并进行优化。

    Python标准库中的性能测试相关模块:

    1. timeit模块:timeit模块提供了一个简单的接口来测量小段代码的执行时间。可以使用它来比较不同实现方式的性能差异。

    2. cProfile模块:cProfile模块提供了一个分析器,用于确定代码中的瓶颈所在。它可以生成一个详细的性能分析报告,帮助开发者找出性能问题所在。

    3. profile模块:profile模块是cProfile模块的一个简化版本,它提供了一个简单的性能分析工具。

    4. hotshot模块:hotshot模块是一个高性能的分析器,可以用于测量代码的执行时间和函数调用次数。

    5. sys模块:sys模块提供了一些与Python解释器和系统相关的功能。其中包括sys.getsizeof()函数,可以用来测量对象的内存使用情况。

    十、质量控制

    Python标准库中的质量控制模块为"unittest",它提供了一种用于编写和运行测试的框架。

    unittest模块基于xUnit测试框架的设计思想,提供了一组用于编写测试用例和进行断言的类和方法。通过使用unittest模块,开发者可以轻松地进行单元测试和集成测试,以确保代码的质量。

    以下是unittest模块的一些关键概念和功能:

    1. 测试用例(Test Case):单个测试单元,通常是一个函数或方法,用于验证代码的特定行为。

    2. 测试套件(Test Suite):一组测试用例的集合,可以一次运行多个测试用例。

    3. 断言(Assertion):用于验证代码输出是否符合预期的语句。unittest模块提供了多种断言方法,如assertEqual()、assertTrue()、assertFalse()等。

    4. 测试运行器(Test Runner):用于运行测试套件中的测试用例,并生成测试结果报告。unittest模块提供了多种测试运行器,如TextTestRunner、HTMLTestRunner等。

    5. 测试装置(Test Fixture):用于准备测试环境和清理测试环境的方法。例如,setUp()方法用于在执行每个测试用例之前设置测试环境,tearDown()方法用于在执行每个测试用例之后清理测试环境。

    使用unittest模块编写测试用例的一般步骤如下:

    1. 导入unittest模块和要测试的模块。

    2. 创建一个测试类,继承unittest.TestCase。

    3. 在测试类中定义测试方法,方法名以"test_"开头。

    4. 在每个测试方法中,编写测试逻辑,并使用断言方法验证代码输出是否符合预期。

    5. 使用unittest的测试运行器运行测试用例。

  • 相关阅读:
    风控建模二、特征工程---通用
    vb判断是否联网,判断网络状态调用gethostbyname API函数
    Java的IO框架
    亚马逊、沃尔玛、eBay、Newegg如何做到稳定出单?有何方法?技术已攻破!
    Java“牵手”阿里巴巴商品列表页数据采集+商品价格数据排序,商品销量排序数据,阿里巴巴API接口采集方法
    火爆全网!用 Pyecharts 就能做出来“迁徙图“和“轮播图“
    【SpringBoot整合NoSql】-----ElasticSearch的安装与操作篇
    分布式服务治理框架Apache Dubbo的学习及应用实战
    06 OpenCV增加图像的对比度
    NIO和多路复用
  • 原文地址:https://blog.csdn.net/m0_65995252/article/details/132978044