我正在使用exif.py库。致电后
tags=exif.process_file(...)
我想检索拍摄图像的时间。所以我继续
t =tags['Image DateTime'] if tags.has_key('Image DateTime') else time.time()
现在我想将d存储在django的数据库中。因为那必须是2010-07-20 14:37:12的形式,但显然exif提供2010:07:20 14:37:12然而当我去
type(t)
它返回'instance'而不是float,这是
的结果type(time.time())
或'str'是字符串的类型。我如何解析EXIF让我把它放入django模型的值?
答案 0 :(得分:2)
使用time.strptime()
解析str()
值,而不是将时间元组格式化为任何所需的格式。
一个例子,使用EXIF返回的“Image DateTime”属性。
>>> e1['Image DateTime']
(0x0132) ASCII=2007:09:06 06:37:51 @ 176
>>> str(e1['Image DateTime'])
'2007:09:06 06:37:51'
>>>
>>> tag = time.strptime(str(e1['Image DateTime']),"%Y:%m:%d %H:%M:%S")
>>> tag
time.struct_time(tm_year=2007, tm_mon=9, tm_mday=6, tm_hour=6, tm_min=37, tm_sec=51,tm_wday=3, tm_yday=249, tm_isdst=-1)
>>> time.strftime("%Y-%m-%d %H:%M:%S", tag)
'2007-09-06 06:37:51'
>>>
答案 1 :(得分:1)
Django最适合datetime
个对象。字符串可以转换为datetime
,但您不应该专注于字符串。您应该专注于创建正确的datetime
对象。
选择1.找出exif时间的实际类。而不是type(t)
,而是t.__class__
来看看它到底是什么。另外,dir(t)
看看它有什么方法。它可能有一些方法可以创建适当的浮点值或time.struct_time
值。
选择2.使用datetime.datetime.strptime
解析时间字符串以创建正确的datetime
对象。阅读:http://docs.python.org/library/datetime.html#datetime.datetime.strptime
答案 2 :(得分:0)
看起来exif.py返回IFD_Tag的一个实例。您想要的值可能是t.values。您还可以使用datetime.strptime()来解析从exif数据中获得的字符串。
答案 3 :(得分:0)
假设标签['Image DateTime'](如果存在)返回类似“2010:07:20 14:37:12”的字符串,那么您可以使用:
if tags.has_key('Image DateTime'):
t = tags['Image DateTime'].replace(':', '-' , 2)
else:
t = time.strftime('%Y-%m-%d %H:%M:%S')
replace
修复exif的时间字符串:
>>> '2010:07:20 14:37:12'.replace(':', '-', 2)
'2010-07-20 14:37:12'
如果你想要GMT而不是当地时间
time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime())