下面是针对这个问题的详细讲解:
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_dir
和dst_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技术站