Python 在数组中获取正确的值
我试图只保存数组列表中的DateTime和DateTimeOriginal 运行此脚本时,在打印arraylist时会得到以下输出:Python 在数组中获取正确的值,python,arrays,Python,Arrays,我试图只保存数组列表中的DateTime和DateTimeOriginal 运行此脚本时,在打印arraylist时会得到以下输出: [(0x0132) ASCII=2010:07:13 00:00:42 @ 174, (0x9003) ASCII=2010:07:13 00:00:42 @ 530] 我试图只获得以下输出,就像我使用打印功能得到的一样: DateTime : 2010:07:13 00:00:42 DateTimeOriginal : 2010:07:13 00:00:42
[(0x0132) ASCII=2010:07:13 00:00:42 @ 174, (0x9003) ASCII=2010:07:13 00:00:42 @ 530]
我试图只获得以下输出,就像我使用打印功能得到的一样:
DateTime : 2010:07:13 00:00:42
DateTimeOriginal : 2010:07:13 00:00:42
我的代码:
import exifread
f = open('dfround2.jpg', 'rb')
time = []
tags = exifread.process_file(f)
print("Time information: \n")
for tag in tags.keys():
if 'Image DateTime' in tag:
print("DateTime : %s" % (tags[tag]))
time.append(tags[tag])
if 'EXIF DateTimeOriginal' in tag:
print("DateTimeOriginal : %s" % (tags[tag]))
time.append(tags[tag])
print("Tijd: \n", time)
如果以后必须使用DateTime和DateTimeOriginal,存储它们的最佳方法是什么?将它们放入变量中是否更好?我该怎么做
我想做的是:
获取图像的时间日期并将其放入时间轴中。所以我必须在以后的脚本中使用我的输出,但我不知道如何存储它。我只大约80%确定我理解您的要求,但是 这将打印出所需的字符串:
print("DateTimeOriginal : %s" % (tags[tag]))
这将存储一些您不想要的复杂标记对象:
time.append(tags[tag])
您需要的只是打印出的相同字符串,而不是标记对象
如果您查看文档,转换类型%s将为您提供:
String使用str转换任何Python对象
因此,如果要存储与%s打印的内容相同的内容,只需调用str,方法与此相同:
time.append(str(tags[tag]))
我不确定您为什么要构建一个包含所有DateTime和DateTimeOriginal标记的字符串表示的列表,但如果这是您想要的,那就是如何做到的。在这两种情况下,标记实例是相同的,但具有不同的属性 您可以将strtag添加到列表中,也可以在再次读取时使用strelement 例如:
from exifread import process_file
with open('dfround2.jpg', 'rb') as f:
tags = process_file(f)
time = tags['Image DateTime']
orig = tags['EXIF DateTimeOriginal']
print [str(time), str(orig)]
# ['2014:12:05 18:12:09', '2013:07:20 15:53:30']
尝试使用.printable仅获取字符串表示形式。实际上,如果您检查Exifrad的源代码,您将看到strtag返回可打印的
arraylist是什么意思?在您的代码中,您在哪里打印输出类似于第一行的内容?此外,您只是想问,如何获得使用%s说明符打印显示的标记[tag]的相同字符串?如果是这样,正如%的文档所解释的,它只是调用str函数,所以您可以做同样的事情。@abarnert printTijd:\n,时间打印第一行。时间=[]是我的列表。通过循环,我从图像中获取元数据,但我必须将时间和日期用于其他事情。但是,我如何使用它们而不将它们放入变量或列表中呢?首先,这真的是它打印的内容吗?因为如果是这样的话,Exifrad库正在做一些非常奇怪的事情……同时,你是什么意思?我如何使用它们而不将它们放入变量或列表中?你已经在打印报表中使用了,对吗?如果你想在以后使用它们,那么显然你必须将它们存储在一个列表或其他东西中;你为什么不想?谢谢你帮我。但是当我使用时间时。appendstrtags[tag]。我仍然得到很多数据。我希望当我打印时间时,我只看到2个值:DateTime:2010:07:13 00:00:42 DateTime原件:2010:07:13 00:00:42。老兄,谢谢你!哇,非常感谢这对我很有帮助!
from exifread import process_file
with open('dfround2.jpg', 'rb') as f:
tags = process_file(f)
time = tags['Image DateTime']
orig = tags['EXIF DateTimeOriginal']
print [str(time), str(orig)]
# ['2014:12:05 18:12:09', '2013:07:20 15:53:30']
if 'Image DateTime' in tag:
print("DateTime : %s" % (tags[tag]))
time.append(tags[tag].printable)
if 'EXIF DateTimeOriginal' in tag:
print("DateTimeOriginal : %s" % (tags[tag]))
time.append(tags[tag].printable)