如何使用Python处理图片?PIL库进阶技巧

pil高效处理大尺寸图像需掌握五项策略:尽早缩放、利用延迟加载、分块处理、及时释放资源、调整像素限制。首先,使用thumbnail()或resize()在加载后立即缩小图片,避免全图解码;其次,pil的image.open()不会立即加载全部像素,仅在操作时才会加载,应避免不必要的load()调用;对于超大图可手动实现分块加载处理;处理完应及时删除对象引用或使用with语句管理资源;最后,必要时可临时提高image.max_image_pixels限制,但需谨慎确保系统内存充足。

如何使用Python处理图片?PIL库进阶技巧

Python在图片处理领域,Pillow(PIL的现代分支)无疑是一个强大且灵活的工具。它远不止是简单的图片缩放或格式转换,其真正的魅力在于那些进阶技巧,比如精细的色彩空间操作、高效的大图处理策略,以及利用卷积核实现各种自定义滤镜效果。掌握这些,你就能让Python在图像处理上发挥出更惊人的潜力。

如何使用Python处理图片?PIL库进阶技巧

解决方案

要深入使用PIL处理图片,我们通常会从几个核心方向着手:理解图像模式、利用变换矩阵进行复杂操作、以及构建自定义滤镜。

如何使用Python处理图片?PIL库进阶技巧

首先,图像模式是基础。PIL支持多种模式,比如L(灰度)、RGB(真彩色)、RGBA(带透明度的真彩色)、CMYK(印刷色)等。很多时候,图片处理的第一步就是根据需求进行模式转换,比如将RGB转为L进行灰度处理,或者转为RGBA以便添加透明度或进行图像叠加。

立即学习“Python免费学习笔记(深入)”;

from PIL import Image, ImageFilter, ImageEnhance# 1. 图像模式转换img = Image.open("input.jpg")# 转换为灰度图gray_img = img.convert("L")# 转换为带透明度的RGB图rgba_img = img.convert("RGBA")# 2. 图像混合与叠加# 假设有两张图片,一张背景图,一张前景图# foreground_img = Image.open("foreground.png").convert("RGBA")# background_img = Image.open("background.jpg").convert("RGBA")# # 确保尺寸一致,或者对前景图进行缩放# foreground_img = foreground_img.resize(background_img.size, Image.Resampling.LANCZOS)# blended_img = Image.alpha_composite(background_img, foreground_img)# # 或者使用 Image.blend 进行固定比例混合# # blended_img = Image.blend(background_img, foreground_img, alpha=0.5)# 3. 图像变换:旋转、缩放、裁剪是基础,更高级的是仿射变换和透视变换# 仿射变换 (例如:倾斜、平移、缩放的组合)# from PIL import Image# img = Image.open("input.jpg")# # 定义一个简单的仿射变换矩阵 (平移x=50, y=20)# # (a, b, c, d, e, f) -> x' = ax + by + c, y' = dx + ey + f# matrix = (1, 0, 50,  # x' = 1*x + 0*y + 50#           0, 1, 20)  # y' = 0*x + 1*y + 20# transformed_img = img.transform(img.size, Image.Transform.AFFINE, matrix)# 4. 自定义滤镜 (卷积核)# 这绝对是PIL进阶的重头戏。你可以定义自己的卷积核(kernel)来创建各种效果。# 比如,一个简单的锐化核:sharpen_kernel = [    -1, -1, -1,    -1,  9, -1,    -1, -1, -1]# 注意:核的元素和需要是1,如果不是,PIL会自动归一化。# 如果核元素和是0,需要设置offset。sharpened_img = img.filter(ImageFilter.Kernel((3, 3), sharpen_kernel, 1, 0))# 5. 色彩增强与调整# PIL的ImageEnhance模块提供了便捷的亮度、对比度、色彩饱和度和锐度调整。enhancer = ImageEnhance.Color(img)color_enhanced_img = enhancer.enhance(1.5) # 增加50%色彩饱和度# 6. EXIF元数据处理 (读写)# PIL可以直接读取和写入EXIF数据,这对于摄影师或需要保留图片信息的用户非常有用。# from PIL.ExifTags import TAGS, GPSTAGS# try:#     exif_data = img._getexif()#     if exif_data:#         for tag_id, value in exif_data.items():#             tag_name = TAGS.get(tag_id, tag_id)#             if tag_name == "GPSInfo":#                 gps_info = {}#                 for gps_tag_id, gps_value in value.items():#                     gps_tag_name = GPSTAGS.get(gps_tag_id, gps_tag_id)#                     gps_info[gps_tag_name] = gps_value#                 print(f"GPS Info: {gps_info}")#             else:#                 print(f"{tag_name}: {value}")# except AttributeError:#     print("No EXIF data found.")# 保存处理后的图片# sharpened_img.save("sharpened_output.jpg")

PIL如何高效处理大尺寸图像,避免内存溢出?

处理大尺寸图像时,内存管理确实是个让人头疼的问题。我个人就遇到过好几次,脚本跑着跑着突然就OOM(Out Of Memory)了,尤其是在服务器上,那感觉可真不好受。PIL在设计上已经考虑了一些优化,但我们作为开发者,也得掌握一些策略来配合它。

如何使用Python处理图片?PIL库进阶技巧

首先,最直接的办法就是尽早缩放。如果你最终只需要一个缩略图或者较小尺寸的图像,那么在加载图片后,立刻进行thumbnail()或者resize()操作。PIL在执行这些操作时,会尝试更高效地处理内存,而不是先加载完整的大图再缩放。比如,img.thumbnail((width, height))会修改原图对象,并且在可能的情况下,它会尝试在不完全解码整个大图的情况下进行缩放。

from PIL import Image# 假设要处理一个非常大的图片large_image_path = "very_large_image.jpg"try:    with Image.open(large_image_path) as img:        # 立即缩放到目标尺寸,避免加载完整大图到内存        # 如果只需要预览或缩略图,thumbnail是更好的选择        img.thumbnail((800, 600)) # thumbnail会原地修改图片对象,并保持宽高比        # 如果需要精确尺寸,使用resize        # img = img.resize((800, 600), Image.Resampling.LANCZOS)        img.save("processed_small_image.jpg")except Exception as e:    print(f"处理大图时发生错误: {e}")

其次,理解PIL的延迟加载机制。当你用Image.open()打开一张图片时,PIL并不会立即把所有像素数据都加载到内存里,它只是读取了图片头部信息。只有当你真正需要操作像素数据时(比如调用load()方法,或者执行resize()filter()等操作),数据才会被完全加载。所以,尽量避免不必要的load()调用。

再来,分块处理(Tiling)虽然PIL本身不直接支持像OpenCV那样方便的图像分块处理,但在极端情况下,比如处理几十GB的超大图像,你可以考虑自己实现一个分块加载和处理的逻辑。这通常意味着你需要知道图像的尺寸,然后计算出每个小块的坐标,分别加载、处理、再拼接。这听起来有点复杂,但对于某些特定应用场景,是不得不采取的策略。不过,对于大多数“大”图(比如几千到几万像素级别),PIL的内置优化通常够用。

还有一点,及时释放资源。在Python中,当一个对象不再被引用时,垃圾回收机制会自动清理它。但在处理大量图片时,显式地关闭文件句柄和清空不再需要的图像对象引用是个好习惯。使用with Image.open(...) as img:这种上下文管理器,可以确保文件句柄被正确关闭。处理完图片后,如果不再需要该图片对象,可以将其设置为None,帮助垃圾回收器更快地回收内存。

from PIL import Imageimport os# 批量处理,避免内存堆积input_dir = "large_images_folder"output_dir = "processed_images_folder"os.makedirs(output_dir, exist_ok=True)for filename in os.listdir(input_dir):    if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')):        input_path = os.path.join(input_dir, filename)        output_path = os.path.join(output_dir, f"thumb_{filename}")        try:            with Image.open(input_path) as img:                img.thumbnail((800, 600))                img.save(output_path)            print(f"Processed {filename}")        except Exception as e:            print(f"Failed to process {filename}: {e}")        # 显式删除引用,帮助GC        del img

最后,一个比较偏门但有时有效的方法是调整Image.MAX_IMAGE_PIXELS。PIL为了防止恶意图片导致内存耗尽,默认限制了可打开的最大像素数。如果你的图片真的非常大,超出了这个限制,你会得到一个DecompressionBombWarningDecompressionBombError。你可以临时提高这个限制,但请务必小心,确保你的系统有足够的内存来处理。

from PIL import Image# 临时提高最大像素限制 (慎用!)# Image.MAX_IMAGE_PIXELS = None # 移除限制,极度危险# Image.MAX_IMAGE_PIXELS = 20000 * 20000 # 设置一个更大的值# 正常操作# img = Image.open("really_huge_image.tif")

总的来说,处理大图就是“早缩放、巧加载、勤释放”。

深入探索PIL的图像滤镜与自定义核函数应用

说到图像滤镜,很多人可能首先想到的是Photoshop里那些“锐化”、“模糊”、“浮雕”之类的效果。在PIL里,ImageFilter模块提供了很多预设的滤镜,用起来很方便,比如img.filter(ImageFilter.BLUR)。但真正的乐趣,在于我们能自定义卷积核(Kernel),这才是图像处理的魔法所在。

卷积,说白了,就是用一个小矩阵(核)在图像上“滑动”,每次滑动都计算核与图像对应区域的乘积之和,然后把这个和作为中心像素的新值。这个过程听起来有点抽象,但它几乎是所有基于像素邻域操作滤镜的底层原理。

ImageFilter.Kernel就是PIL提供给我们自定义卷积核的接口。它需要三个参数:

size:一个元组,表示卷积核的尺寸,比如(3, 3)表示3×3的核。kernel:一个序列(列表或元组),包含核的元素,按行排列。对于3×3的核,就是9个元素。scale(可选):归一化因子。最终像素值会除以这个值。如果核元素的和不为0,通常设为核元素之和。offset(可选):偏移量。最终像素值会加上这个值。用来调整亮度,避免负值或溢出。

我们来看一个锐化的例子。一个经典的锐化核是这样的:

-1 -1 -1-1  9 -1-1 -1 -1

这个核的特点是,它会突出中心像素与周围像素的差异。周围的负值会“减弱”背景,而中心的正值会“增强”自身。

from PIL import Image, ImageFilterimg = Image.open("input.jpg")# 自定义锐化滤镜sharpen_kernel_elements = [    -1, -1, -1,    -1,  9, -1,    -1, -1, -1]# 核元素总和是1 (9 - 8 = 1),所以 scale 设为 1,offset 设为 0sharpen_filter = ImageFilter.Kernel((3, 3), sharpen_kernel_elements, 1, 0)sharpened_img = img.filter(sharpen_filter)# sharpened_img.save("custom_sharpened.jpg")# 再来一个边缘检测的例子 (Sobel X方向)edge_detect_x_kernel = [    -1, 0, 1,    -2, 0, 2,    -1, 0, 1]# 核元素总和是0,所以 scale 可以设为 1,但需要注意 offset,或者让PIL自动处理# 这里我们不设置scale和offset,让PIL根据内部规则处理,通常对边缘检测效果更好edge_x_filter = ImageFilter.Kernel((3, 3), edge_detect_x_kernel)edge_x_img = img.filter(edge_x_filter)# edge_x_img.save("edge_x_detected.jpg")

设计自定义核函数是个很有意思的活儿。你可以尝试不同的数值组合,观察它们对图像的影响。比如,一个简单的均值模糊核,就是所有元素都为1,然后scale设为核的元素总数(比如9)。

# 均值模糊核blur_kernel_elements = [    1, 1, 1,    1, 1, 1,    1, 1, 1]blur_filter = ImageFilter.Kernel((3, 3), blur_kernel_elements, sum(blur_kernel_elements), 0)blurred_img = img.filter(blur_filter)# blurred_img.save("custom_blurred.jpg")

自定义核的强大之处在于,它能让你跳出预设滤镜的限制,实现各种奇特的视觉效果,从浮雕、压花到自定义的降噪、色彩分离等等。这就像给了你一个画笔,你可以画出任何你想要的线条,而不是只能选择预设的形状。

如何利用PIL进行图像色彩空间转换与高级色彩调整?

色彩,是图像的灵魂。PIL在色彩处理上提供了相当多的灵活性,从简单的色彩模式转换到更复杂的像素级操作,都能满足。

最常用的就是img.convert()方法,它能将图像在不同色彩模式之间转换。比如,从RGB转到L(灰度),这是最常见的操作之一。但你知道吗,你还可以转到HSV(色相、饱和度、亮度)或CMYK(印刷用)模式,这在某些特定场景下非常有用。

from PIL import Image, ImageEnhanceimg = Image.open("input.jpg")# 转换为灰度图 (Luminance)gray_img = img.convert("L")# 转换为HSV (Hue, Saturation, Value) 模式# HSV模式在调整色相和饱和度时非常直观hsv_img = img.convert("HSV")# 如果需要操作HSV分量,可以拆分通道# h, s, v = hsv_img.split()# # 比如,增加饱和度 (直接操作像素会更复杂,这里仅为示意)# # s = s.point(lambda i: i * 1.2) # 可能会溢出,需要更复杂的处理# # new_hsv_img = Image.merge("HSV", (h, s, v))# # new_rgb_img = new_hsv_img.convert("RGB")# 转换为CMYK (Cyan, Magenta, Yellow, Key/Black) 模式,用于印刷cmyk_img = img.convert("CMYK")

为什么我们需要这些不同的色彩空间?L模式简化了图像,非常适合进行边缘检测、二值化等操作,因为它只关注亮度信息。HSV模式则更符合人类对色彩的感知方式:色相(颜色种类)、饱和度(颜色纯度)、亮度(明暗)。如果你想改变图片的整体色调,或者让某个颜色更鲜艳,HSV模式下的操作会比在RGB模式下直观得多。CMYK模式则是印刷行业的标准,如果你处理的图片最终要用于印刷,转换到CMYK并进行相应的调整是必不可少的。

除了模式转换,PIL的ImageEnhance模块提供了更高级的色彩调整工具。它有Color(色彩饱和度)、Brightness(亮度)、Contrast(对比度)和Sharpness(锐度)四个类。使用它们非常简单,你只需要创建一个增强器对象,然后调用enhance()方法并传入一个因子。

# 增强色彩饱和度enhancer_color = ImageEnhance.Color(img)saturated_img = enhancer_color.enhance(1.8) # 增加80%的饱和度# 调整亮度enhancer_brightness = ImageEnhance.Brightness(img)brighter_img = enhancer_brightness.enhance(1.3) # 增加30%的亮度# 调整对比度enhancer_contrast = ImageEnhance.Contrast(img)contrasted_img = enhancer_contrast.enhance(1.5) # 增加50%的对比度# 调整锐度enhancer_sharpness = ImageEnhance.Sharpness(img)sharper_img = enhancer_sharpness.enhance(2.0) # 增加一倍锐度# sharper_img.save("enhanced_sharpness.jpg")

这些方法虽然方便,但它们是全局性的调整。如果你需要更精细的控制,比如只调整图片中某个特定区域的颜色,或者实现一些非线性的色彩映射,你就需要深入到像素层面。PIL的point()方法允许你对每个像素应用一个函数或查找表,这为高级色彩调整打开了大门。

# 使用 point() 方法进行自定义亮度调整 (非线性)# 比如,让暗部更亮,亮部变化不大def custom_brightness_curve(pixel_value):    return int(255 * (pixel_value / 255)**0.8) # 伽马校正,让图像变亮# 对每个通道应用# 如果是RGB图,需要先split再merger, g, b = img.split()r_new = r.point(custom_brightness_curve)g_new = g.point(custom_brightness_curve)b_new = b.point(custom_brightness_curve)custom_bright_img = Image.merge("RGB", (r_new, g_new, b_new))# custom_bright_img.save("custom_brightness.jpg")# 或者使用查找表 (LUT)# lut = [int(255 * (i / 255)**0.8) for i in range(256)]# custom_bright_img_lut = img.point(lut) # 这种方式更高效

在处理带有透明度(Alpha通道)的图像时,模式转换到RGBA尤为重要。你可以单独操作Alpha通道来控制图像的透明度,或者将其与另一张图像进行叠加。这在制作水印、图像合成等场景中非常常见。

色彩处理的魅力在于,它既是科学也是艺术。PIL提供的工具让我们能够精确地控制图像的每一个像素,从而实现从基础修正到创意滤镜的各种效果。

以上就是如何使用Python处理图片?PIL库进阶技巧的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1363077.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月14日 03:12:31
下一篇 2025年12月14日 03:12:41

相关推荐

  • 解决PyTorch多标签分类中批量大小不一致的问题

    本文针对在PyTorch中进行多标签图像分类任务时,遇到的输入批量大小与模型输出批量大小不一致的问题,提供了详细的分析和解决方案。通过检查模型结构、数据加载过程以及前向传播过程,定位了问题根源在于卷积层后的特征图尺寸计算错误。最终,通过修改view操作和线性层的输入维度,成功解决了批量大小不匹配的问…

    2025年12月14日
    000
  • 在 Amazon Linux 2023 上安装 Python 的强化版 pip

    本文旨在指导用户如何在 Amazon Linux 2023 上安装与系统自带 Python 版本对应的强化版 pip 包。通过安装系统提供的 python3-pip 包,确保使用的 pip 版本与系统环境兼容,并遵循 Amazon Linux 2023 的支持路径,避免潜在的兼容性问题。 在 Ama…

    2025年12月14日
    000
  • 在 Amazon Linux 2023 上安装安全增强的 pip

    在 Amazon Linux 2023 上,为了确保系统的安全性和稳定性,建议尽可能使用官方提供的软件包。 本文将介绍如何在 Amazon Linux 2023 上安装与系统自带 Python 版本对应的 pip 包,从而避免使用未经验证的第三方安装方式。 Amazon Linux 2023 预装了…

    2025年12月14日
    000
  • 在 Amazon Linux 2023 上安装强化版 Python pip

    本文将介绍如何在 Amazon Linux 2023 上安装强化版 Python pip。正如摘要所述,我们将通过安装 python3-pip 包,使用官方支持且经过强化的 pip 版本。 Amazon Linux 2023 默认包含 Python,但并未预装 pip。 为了获得与系统 Python…

    2025年12月14日
    000
  • 在 Amazon Linux 2023 上安装安全加固的 pip

    本文档旨在指导用户在 Amazon Linux 2023 上安装与系统自带 Python 版本相对应的、经过安全加固的 pip 包。我们将探讨官方推荐的安装方式,确保获得与系统环境兼容且安全可靠的 pip 版本,以便进行后续的 Python 包管理。 在 Amazon Linux 2023 上,Py…

    2025年12月14日
    000
  • 在Amazon Linux 2023上安装安全加固的pip

    在Amazon Linux 2023上安装Python包管理器pip,并确保其安全性,是一个值得关注的问题。Amazon Linux 2023预装了Python,但默认情况下不包含pip。为了满足用户对安全和稳定性的需求,我们需要选择一种可靠的方式来安装pip。 正如前文所述,在Amazon Lin…

    2025年12月14日
    000
  • 使用F-string和集合时结果顺序错乱的原因分析及解决方案

    本文旨在解释在使用Python的f-string和集合(set)时,为何集合中的元素顺序与预期不符。文章将深入探讨集合的无序性,并对比列表(list)的有序性,帮助读者理解不同数据结构在f-string中的表现,从而避免因数据结构特性导致的误解。 在Python中使用f-string进行格式化输出时…

    2025年12月14日
    000
  • 使用 f-strings 格式化集合时,结果顺序为何与预期不符?

    本文旨在解释在使用 f-strings 格式化 Python 集合时,为何集合元素的顺序可能与预期不符。通过对比集合和列表的不同特性,阐明了集合的无序性导致输出结果顺序不确定的原因,并强调这与 f-strings 本身无关。理解集合的本质是解决此类问题的关键。 在 python 中,使用 f-str…

    2025年12月14日
    000
  • 使用f-string格式化集合时结果顺序不一致的原因

    本文旨在解释Python中使用f-string格式化集合(set)时,输出结果顺序不确定的原因。通过对比集合和列表的特性,阐明集合的无序性导致每次打印结果顺序可能不同的现象,并强调这与f-string本身无关。 在Python中,使用f-string可以方便地将表达式的值嵌入到字符串中。然而,当与集…

    2025年12月14日
    000
  • Python f-string 中集合表达式的无序性

    本文旨在解释 Python 中使用 f-string 结合集合推导式时,结果顺序不确定的原因。通过对比集合和列表推导式的差异,阐明集合的无序性导致输出结果顺序不稳定的现象,并强调这与 f-string 本身无关。 在 python 中,f-string 是一种强大的字符串格式化工具,它允许你在字符串…

    2025年12月14日
    000
  • 如何使用Python处理卫星图像?rasterio库教程

    使用rasterio处理卫星图像的基础方法包括:1.安装库并读取geotiff文件获取元数据和波段数据;2.查看图像波段结构并提取特定波段;3.结合matplotlib显示图像并调整对比度;4.保存处理后的图像并保留空间参考信息。首先,通过pip安装rasterio,并用open()函数读取文件,获…

    2025年12月14日 好文分享
    000
  • 如何使用Python生成报告?Jinja2模板应用指南

    使用python的jinja2模板引擎生成报告的关键步骤如下:1. 安装jinja2并确认环境正常,执行pip install jinja2后导入测试;2. 编写清晰结构的模板文件,如html或文本格式,合理使用变量和控制结构;3. 渲染报告时加载模板并传入匹配的数据,最终输出结果文件;4. 可结合…

    2025年12月14日 好文分享
    000
  • 如何用Python制作词云图?wordcloud配置指南

    制作词云图用python的wordcloud库即可,关键在于掌握参数设置和中文处理。步骤包括:1.安装库;2.加载文本并生成词云对象;3.显示或保存图片。中文支持需指定字体路径,并搭配jieba分词。自定义形状需导入遮罩图片,颜色可用colormap调整。其他技巧包括过滤停用词、限制最大词数、控制字…

    2025年12月14日 好文分享
    000
  • 如何使用Python连接SQLite?数据库操作完整流程

    使用python连接sqlite数据库并执行基础操作的解决方案如下:1.通过sqlite3.connect()建立连接;2.创建游标对象执行sql命令;3.使用create table if not exists创建表;4.通过executemany插入数据;5.利用execute和fetchall…

    2025年12月14日 好文分享
    000
  • 如何使用Python实现数据聚类?KMeans算法

    kmeans聚类的核心步骤包括数据预处理、模型训练与结果评估。1. 数据预处理:使用standardscaler对数据进行标准化,消除不同特征量纲的影响;2. 模型训练:通过kmeans类设置n_clusters参数指定簇数,调用fit方法训练模型;3. 获取结果:使用labels_属性获取每个数据…

    2025年12月14日 好文分享
    000
  • 如何使用Python计算时间差—Timedelta时间运算完整指南

    python中使用timedelta对象计算时间差,主要通过1.datetime模块进行基本计算,如获取天数、秒等属性;2.pandas批量处理表格数据中的时间差,并提取具体数值;3.timedelta还可用于时间加减运算,如加小时、分钟、周数;4.注意时区和夏令时影响,建议用高级库处理复杂情况。 …

    2025年12月14日 好文分享
    000
  • Python怎样操作CAD图纸?ezdxf库入门

    python操作cad图纸主要通过ezdxf库实现,1.ezdxf将dxf文件解析为drawing对象,支持创建、读取、修改各种cad实体;2.安装使用pip install ezdxf;3.核心概念包括模型空间、图纸空间和实体类型如线、圆、文本等;4.代码可创建添加几何图形并保存为dxf文件;5.…

    2025年12月14日 好文分享
    000
  • 如何用Python开发智能客服?NLP对话系统

    要用python开发一个智能客服系统,需聚焦自然语言处理与对话管理。1. 确定技术路线:选用rasa构建对话逻辑,结合transformers、spacy等处理文本,并用flask/fastapi提供接口;2. 实现意图识别与实体提取:通过训练nlu模型判断用户意图及关键信息;3. 设计对话管理:利…

    2025年12月14日 好文分享
    000
  • 如何使用Python处理RAR文件?rarfile模块教程

    rarfile是python处理rar文件的首选模块因为它纯python实现无需依赖外部工具跨平台兼容性好。使用时先通过pip install rarfile安装然后用rarfile()打开文件可调用namelist()查看内容extractall()或extract()解压文件推荐配合with语句…

    2025年12月14日 好文分享
    000
  • Python怎样操作MySQL数据库?PyMySQL连接方法

    pymysql连接mysql数据库的核心步骤包括导入库、建立连接、创建游标、执行sql、事务处理及关闭连接。1. 导入pymysql模块;2. 使用pymysql.connect()建立连接,传入数据库配置参数;3. 通过with conn.cursor()创建并自动管理游标;4. 使用cursor…

    2025年12月14日 好文分享
    000

发表回复

登录后才能评论
关注微信