【问题标题】:Python PIL save file with datetime as namePython PIL 以日期时间为名称保存文件
【发布时间】:2011-06-13 07:05:23
【问题描述】:

我对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')

它很短,但它可以满足我的需要。 我意识到需要导入日期时间,但我无法将数据作为名称获取而不会出错。是的,我已经尝试过 str() 命令。任何帮助将不胜感激。

【问题讨论】:

    标签: python datetime python-imaging-library video-capture


    【解决方案1】:
    '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 模块。要以不同的方式格式化时间戳,请咨询the documentation here

    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')
    

    用文件名中的日期时间保存图像。 (为了便于阅读,我将函数调用分成两行,请参阅 this question 了解其工作原理。)

    【讨论】:

    • from time import strftime会更简单
    • @eyquem 感谢您的建议,我已将其添加到答案中。
    • from time import strftime 避免导入模块time的所有内容
    • 对于尝试使用此脚本的任何人,日期时间字符串中的冒号会导致错误。我用空格代替了它,尽管看起来很有趣,但脚本运行时没有错误。
    • 请注意,: 在 Windows 中不是有效的文件名字符,但在 Linux 中有效。
    猜你喜欢
    • 2018-08-12
    • 1970-01-01
    • 2017-08-25
    • 2018-11-03
    • 2011-10-26
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多