Python3如何将源目录中的图片用MD5命名并可以设定目标目录

下面是针对这个问题的详细讲解:

1. 生成MD5值

首先需要使用Python3中的hashlib库生成MD5值。以下是一个简单的示例代码:

import hashlib

def get_md5(filename):
    m = hashlib.md5()  # 初始化哈希算法对象
    with open(filename, 'rb') as f:
        while True:
            data = f.read(1024)  # 每次读取1024字节
            if not data:
                break
            m.update(data)  # 更新哈希值
    return m.hexdigest()

其中,get_md5()函数接受一个文件名作为参数,返回对该文件生成的MD5值。这里使用rb模式打开文件是因为需要以二进制方式读取。

2. 重命名文件

接下来需要将目录中的文件重命名,以MD5值作为新的文件名。以下是一个简单的示例代码:

import os

src_dir = '/path/to/source/directory'
dst_dir = '/path/to/destination/directory'

for filename in os.listdir(src_dir):
    src_path = os.path.join(src_dir, filename)
    if os.path.isfile(src_path):
        md5 = get_md5(src_path)
        ext = os.path.splitext(filename)[-1]  # 获取文件扩展名
        dst_path = os.path.join(dst_dir, md5+ext)
        os.rename(src_path, dst_path)

上述代码中,src_dirdst_dir分别代表源目录和目标目录的路径。遍历源目录中的每个文件,计算出它的MD5值并将其作为新的文件名,最后使用os.rename()函数重命名文件。

注意,由于涉及到文件操作,需要确保你有足够的权限进行读写操作。此外,在重命名文件之前最好先进行一次备份操作,以防意外情况发生。

示例说明:

示例1:

我们有一个源目录/images,其中包含以下几个文件:

|-/images
  |-1.jpg
  |-2.jpg
  |-3.jpg

我们希望将这些文件重命名并移动到目标目录/dest下,以MD5值作为新的文件名。这时可以将上述示例代码保存为rename.py,并在终端中运行:

$ python rename.py

运行完毕后,目标目录中应该出现了以下文件:

|-/dest
  |-c4ca4238a0b923820dcc509a6f75849b.jpg
  |-c81e728d9d4c2f636f067f89cc14862c.jpg
  |-eccbc87e4b5ce2fe28308fd9f2a7baf3.jpg

示例2:

在示例1的基础上,我们希望将图片文件的扩展名改为.png。这时可以在代码中添加一行代码:

    ext = '.png'  # 修改扩展名为.png

并重新运行上述代码即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3如何将源目录中的图片用MD5命名并可以设定目标目录 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python利用AI接口实现抠图并改图片底色

    Python利用AI接口实现抠图并改图片底色 在Python中,我们可以使用AI接口实现抠图并改变图片底色。本文将详细讲解如何使用Python调用AI接口,包括如何安装和使用AI接口、如何实现抠图和改变底色等。 安装和使用AI接口 首先,我们需要安装AI接口。以下是一个示例,演示如何使用pip安装AI接口pytesseract: pip install py…

    python 2023年5月15日
    00
  • Python autoescape标签用法解析

    Python autoescape标签用法解析 在Django模板中,autoescape标签用于控制模板中的HTML转义。本攻略将介绍autoescape标签的用法和示例。 用法 autoescape标签用于控制模板中的HTML转义。它有两种用法: 开启HTML转义 “`django {% autoescape on %} {{ content }} {…

    python 2023年5月15日
    00
  • Centos7 下安装最新的python3.8

    以下是“Centos7 下安装最新的python3.8”的完整攻略。 安装必备工具 在安装python3.8之前,需要先安装一些必要的工具。可以使用以下命令来安装: sudo yum groupinstall "Development Tools" sudo yum -y install zlib-devel bzip2-devel op…

    python 2023年5月30日
    00
  • Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法

    Python3使用xml.dom.minidom和xml.etree模块解析xml文件封装函数的方法 在Python中,我们可以使用xml.dom.minidom和xml.etree模块来解析XML文件。本文将详细介绍如何使用这两个模块来解析XML文件,并封装成函数。 使用xml.dom.minidom模块解析XML文件 xml.dom.minidom模块是…

    python 2023年5月15日
    00
  • Python查找文件中包含中文的行方法

    在Python中查找文件中包含中文的行,可以使用正则表达式来匹配中文字符。本文将详细讲解Python查找文件中包含中文的行方法,并提供两个示例说明。 步骤一:了解中文字符编码 在使用正则表达式匹配中文字符前,我们需要了解中文字符的编码方式。在Python中,中文字符通常使用UTF-8编码。因此,我们可以使用UTF-8编码来匹配中文字符。 步骤二:编写正则表达…

    python 2023年5月14日
    00
  • 在 cx_Freeze 之后 Python 脚本未写入文件

    【问题标题】:Python script not writing on files after cx_Freeze在 cx_Freeze 之后 Python 脚本未写入文件 【发布时间】:2023-04-02 10:19:02 【问题描述】: 我正在编写一个打算用 cx_Freeze 冻结的脚本。我正在使用 Python 3.6 和 cx_Freeze 5.…

    Python开发 2023年4月8日
    00
  • Python 开发Activex组件方法

    Python 开发 ActiveX 组件方法 什么是 ActiveX 组件? ActiveX 是微软公司1996年提出的一种面向对象的编程框架,它将 COM 和 OLE 技术结合起来,支持开发可重用的组件和控件。ActiveX 组件是透过 COM 接口实现的,可以用于各种编程语言中,如 Visual Basic、Visual C++ 和 .NET 等。 Py…

    python 2023年6月3日
    00
  • Python双端队列deque的实现

    Python双端队列deque的实现 双端队列deque即”double-ended queue”,是一种具有队列和栈的性质的数据结构。deque可以从队列的两端插入和删除元素。Python官方提供了collections模块中的deque数据类型,可以实现双端队列的操作。本文将详细讲解如何使用Python中的deque来实现双端队列的操作。 创建deque…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部