Python PIL 保存文件时使用日期时间作为名称

6 投票
1 回答
14060 浏览
提问于 2025-04-16 19:27

我对Python还比较陌生,语法也了解得不多,但我很想学更多的知识。简单来说,我想用PIL的保存功能,把一个.png文件保存下来,文件名是当前的日期和时间。可能会有点复杂,因为我不是直接使用PIL,而是通过Videocapture模块来使用,但我觉得这应该没什么大问题。这是我能用的代码:

from VideoCapture import Device
cam = Device()
cam.saveSnapshot('C:\Users\Myname\Dropbox\Foldes\image.png', timestamp=3, boldfont=1, textpos='bc')

代码很简短,但能满足我的需求。我知道需要导入Datetime模块,但我总是无法把数据作为文件名保存,出现错误。是的,我试过使用str()这个命令。任何帮助都将非常感谢。

1 个回答

9
'C:\Users\Myname\Dropbox\Foldes\image.png'

在Python的字符串中,反斜杠有特殊的含义,所以你需要特别对待它们。你可以用两个反斜杠代替一个...

'C:\\Users\\Myname\\Dropbox\\Foldes\\image.png'

...或者在字符串前加一个r(只要它不是以反斜杠结尾)

r'C:\Users\Myname\Dropbox\Foldes\image.png'

要生成一个包含当前日期的字符串,格式为YYYY-MM-DD-HH:MM,我们可以使用datetime模块,像这样做。如果你想以不同的方式格式化时间戳,可以查看这里的文档

import datetime
date_string = datetime.datetime.now().strftime("%Y-%m-%d-%H:%M")

作为一个更简短的替代方案,你也可以使用类似的time模块:

import time
date_string = time.strftime("%Y-%m-%d-%H:%M")

之后,你应该可以直接这样做

cam.saveSnapshot(r'C:\Users\Myname\Dropbox\Foldes\image-' + date_string + '.png',
                 timestamp=3, boldfont=1, textpos='bc')

来保存带有日期时间的文件名的图片。(我把函数调用分成两行是为了更好阅读,关于这怎么做的解释,可以参考这个问题。)

撰写回答