当程序的代码量非常大的时候,一般需要将代码分为一些有组织的代码段,这些代码段之间有一定的联系。
Python模块一般都位于安装,目录下Lib文件中,执行help("modules")
,命令,可以查看已经安装的所有模块列表。Python模块可以分为以下三类:
PyPI
首页 搜索模块,找到需要的模块,单击Download files
进入下载页面。然后,选择下载二进制文件(.whl),或者源代码压缩包(.gz)。最后,使用pip命令进行安装,安装时把模块名替换为二进制安装文件即可。注意,在命令行下改变当前目录到安装文件的目录下。>pip install 模块名
pip命令自动下载模块包并完成安装。pip命令默认连接Python官方服务器下载。
使用import
语句可以导入模块,语法格式如下:
import module
Remark
:
所有的模块在导入时候的顺序:
import
关键字时,自动在搜索路径中搜寻对应的模块,如果发现是初次导入,就加载运行这个文件。在程序顶层导入,那么它的作用域就是全局的;在函数中导入,作用域就是局部的。使用from-import
语句可以将指定模块中的成员名称导入作用域中,如函数、类或变量等,语法结构如下:
from module_name import name1, name2, ...
from module_name import *
导入一个包,其本质就是解释该包下的__init__.py
文件。导入包内模块有两种方式:绝对路径导入和相对路径导入。
Python提供了多个内置模块用于操作日期和时间,如:time
、date
、calendar
。
time
模块时间也是一种数据类型,这种类型的数据一般分为三种形式:时间戳、结构化时间和格式化时间字符串。
time
模块的time()
函数获取当前时间的时间戳。import time
now=time.time()
print(now)
struct_time
元组,包含9个字段。序号 | 属性 | 字段 | 值 |
---|---|---|---|
0 | tm_year |
4位数年 | 2008 |
1 | tm_mon |
月 | 1~12 |
2 | tm_mday |
日 | 1~31 |
3 | tm_hour |
小时 | 0~23 |
4 | tm_min |
分钟 | 0~59 |
5 | tm_sec |
秒 | 0~61 |
6 | tm_wday |
一周的第几天 | 0~6 |
7 | tm_yday |
一年的第几日 | 1~366 |
8 | tm_isdst |
夏令时 | 1表示夏令时,0非夏令时 ,-1表示未知,默认为-1 |
ctime()
函数获取当前时间的字符串import time
print(time.ctime())
datetime
模块datetime
模块是 Python 标准库中用于处理日期和时间的强大工具,它提供了多种类来操作日期和时间,如 date
、time
、datetime
、timedelta
等。下面详细介绍这些类及其常见用法。
datetime
模块在使用 datetime
模块的功能之前,需要先导入它。
import datetime
date
类date
类用于处理日期,包含年、月、日信息。
创建 date
对象
# 创建一个指定日期的 date 对象
d = datetime.date(2025, 2, 9)
print(d) # 输出: 2025-02-09
获取日期的属性
year = d.year
month = d.month
day = d.day
print(year, month, day) # 输出: 2025 2 9
获取当前日期
today = datetime.date.today()
print(today) # 输出当前日期
time
类time
类用于处理时间,包含时、分、秒、微秒信息。
创建 time
对象
# 创建一个指定时间的 time 对象
t = datetime.time(12, 30, 45, 123456)
print(t) # 输出: 12:30:45.123456
获取时间的属性
hour = t.hour
minute = t.minute
second = t.second
microsecond = t.microsecond
print(hour, minute, second, microsecond) # 输出: 12 30 45 123456
datetime
类datetime
类是 date
类和 time
类的结合,包含年、月、日、时、分、秒、微秒信息。
创建 datetime
对象
# 创建一个指定日期和时间的 datetime 对象
dt = datetime.datetime(2025, 2, 9, 12, 30, 45)
print(dt) # 输出: 2025-02-09 12:30:45
获取当前日期和时间
now = datetime.datetime.now()
print(now) # 输出当前日期和时间
从字符串解析 datetime
对象
date_string = "2025-02-09 12:30:45"
dt = datetime.datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print(dt) # 输出: 2025-02-09 12:30:45
将 datetime
对象格式化为字符串
dt = datetime.datetime.now()
formatted_date = dt.strftime("%Y/%m/%d %H:%M:%S")
print(formatted_date) # 输出格式化后的日期和时间
timedelta
类timedelta
类用于表示两个日期或时间之间的差值。
计算日期差值
d1 = datetime.date(2025, 2, 9)
d2 = datetime.date(2025, 2, 10)
delta = d2 - d1
print(delta.days) # 输出: 1
日期加减操作
dt = datetime.datetime.now()
# 增加一天
new_dt = dt + datetime.timedelta(days=1)
print(new_dt)
random
用来生成随机数:
random.random()
:生成0~1.0的随机浮点数random.uniform(a,b)
:生成a~b的随机浮点数random.ranint(a,b)
:生成a~b的随机整数random.randrange([start=0],stop[,step=1])
指定范围步长的集合内的随机数random.choice(sequence)
:从序列中取出一个元素random.shufflex(x[,random])
:用于一个列表中的元素打乱random.sample(sequence,k)
:丛指定的序列随机获取指定长度的切片摘要算法,也称为哈希算法或散列算法,它是一种将任意长度的数据转换为固定长度哈希值的算法。这个哈希值通常是一段十六进制的字符串,具有唯一性和确定性,常用于数据完整性验证、密码存储、数字签名等领域。以下为你详细介绍摘要算法:
常见摘要算法
import hashlib
data = "Hello, World!".encode('utf-8')
md5_hash = hashlib.md5(data).hexdigest()
print(md5_hash)
import hashlib
data = "Hello, World!".encode('utf-8')
sha1_hash = hashlib.sha1(data).hexdigest()
print(sha1_hash)
import hashlib
data = "Hello, World!".encode('utf-8')
sha256_hash = hashlib.sha256(data).hexdigest()
print(sha256_hash)
import hashlib
data = "Hello, World!".encode('utf-8')
sha3_256_hash = hashlib.sha3_256(data).hexdigest()
print(sha3_256_hash)
安装pillow
操作图像
import unittest
from PIL import Image
import os
class TestPillowLibrary(unittest.TestCase):
def setUp(self):
# 定义测试图片的路径
self.image_path = 'test_image.jpg'
# 检查测试图片是否存在
if not os.path.exists(self.image_path):
raise FileNotFoundError(f"测试图片 {self.image_path} 未找到,请确保该图片存在于当前目录。")
def test_image_open(self):
try:
# 尝试打开图片
with Image.open(self.image_path) as img:
self.assertEqual(img.format, 'JPEG')
except Exception as e:
self.fail(f"打开图片时出现错误: {e}")
def test_image_resize(self):
try:
# 打开图片
with Image.open(self.image_path) as img:
# 原图片的尺寸
original_width, original_height = img.size
# 调整图片大小
new_size = (original_width // 2, original_height // 2)
resized_img = img.resize(new_size)
# 检查调整后的尺寸是否正确
self.assertEqual(resized_img.size, new_size)
except Exception as e:
self.fail(f"调整图片大小时出现错误: {e}")
def test_image_save(self):
try:
# 打开图片
with Image.open(self.image_path) as img:
# 定义保存的文件名
save_path = 'test_saved_image.jpg'
# 保存图片
img.save(save_path)
# 检查保存的文件是否存在
self.assertTrue(os.path.exists(save_path))
# 删除保存的测试文件
os.remove(save_path)
except Exception as e:
self.fail(f"保存图片时出现错误: {e}")
if __name__ == '__main__':
unittest.main()