详解Python PIL以日期时间为名称保存文件

  • Post category:Python

下面是关于使用Python PIL以日期时间为名称保存文件的完整攻略。

1. 准备工作

在开始编写代码之前,需要先安装Pillow,它是Python的一个图像处理库,可以处理各种格式的图片文件。

安装Pillow的命令如下:

pip install Pillow

2. 代码实现

2.1 获取当前日期时间

在保存文件时,我们需要在文件名中包含当前的日期时间信息。为了获取当前的日期时间,可以使用Python的datetime模块:

from datetime import datetime

now = datetime.now()
dt_string = now.strftime("%Y-%m-%d %H-%M-%S")
print("当前的日期时间是:", dt_string)

以上代码中,我们首先导入了datetime模块,然后使用now()函数获取当前日期时间。接着,使用strftime()方法将日期时间格式化成字符串,最后打印出来。

2.2 保存文件

有了当前的日期时间信息之后,我们就可以用它来作为文件名保存文件了。例如,我们可以使用如下代码保存一张图片:

from PIL import Image
from datetime import datetime

im = Image.open("test.jpg")
now = datetime.now()
dt_string = now.strftime("%Y-%m-%d %H-%M-%S")
im.save(dt_string + ".jpg")

以上代码使用了PIL中的Image模块打开了一张图片。然后,使用与上面相同的代码获取当前的日期时间信息,并将其作为文件名保存了图片。

2.3 完整代码示例

下面呈现一个完整的代码示例,该代码示例可以实现在一个文件夹中监测到有新的jpg文件出现,然后将该图片用datetime的形式重命名并保存到另一个文件夹中。

import os
from datetime import datetime
from PIL import Image

folder_path = "D:/test/" # 监测的文件夹路径
dest_path = "D:/result/" # 保存的文件夹路径

while True:
    for filename in os.listdir(folder_path):
        if filename.endswith(".jpg"): # 只处理jpg文件
            im_path = os.path.join(folder_path, filename)
            dest_filename = datetime.now().strftime("%Y%m%d-%H%M%S.jpg") # 生成新的文件名
            dest_pathname = os.path.join(dest_path, dest_filename)
            with open(im_path, "rb") as f:
                im = Image.open(f)
                im.save(dest_pathname) # 保存文件
            os.remove(im_path) # 删除原始文件
    time.sleep(10) # 等待10秒钟再次扫描

以上代码使用os模块扫描指定文件夹中的所有文件,并使用带有datetime时间格式的名称将扫描到的jpg文件保存到新的文件夹中。同时,使用os.remove()方法将原始文件从扫描的文件夹中删除。

3. 总结

在这篇攻略中,我们学习了如何使用Python的PIL库和datetime模块以日期时间为名称保存文件。同时,我们给出了一个完整的示例,该示例可以实现在文件夹中监测到有新的jpg文件出现,然后将该图片用datetime的形式重命名并保存到另一个文件夹中。