我有超过800张图片,我需要提取创建日期。但是如果我使用file.mtime
函数,它就无法正常工作。它只是我修改它的日期。有趣的是iPhoto(用于管理照片的mac程序)能够正确检测创建日期。
这是我正在使用的代码。
my.path = "~/Desktop/cool_path_here"
vec.jpg = list.files(path = my.path)
lapply(paste(my.path,vec.jpg,sep = "/"),FUN = file.mtime)
是否有一个功能可以提取照片的创建日期,而不是"获取信息"中显示的日期。 mac上的菜单。
例如:(昨天是5月18日)
和iPhoto(3月16日发现):
R正在寻找:
2017-05-19 15:08:29
答案 0 :(得分:4)
将exif
包用于extract the metadata:
library(exif)
read_exif(paste(my.path,vec.jpg[1], sep="/"))$origin_timestamp
正在返回"2017:03:16 08:47:48"
这就是我要找的东西!
答案 1 :(得分:1)
根据?file.info
,mtime
是修改时间,ctime
是“上次状态更改”时间,atime
是最后一次“访问”时间。根据{{3}},POSIX标准(here)不包括文件标准属性中的创建时间。
file.info(my.path)$atime
可能会更好。在这个测试中没有改变:
DF = data.frame(a = 1:10, b = 10:1)
tmp = tempfile()
write.table(DF, tmp)
Sys.time()
# [1] "2017-05-19 15:03:46 EDT"
file.info(tmp)[ , c('mtime', 'ctime', 'atime')]
# mtime ctime atime
# /tmp/Rtmpzpi8p6/file29e932565c62 2017-05-19 15:03:46 2017-05-19 15:03:46 2017-05-19 15:03:46
DF$c = 11:20
Sys.sleep(10)
write.table(DF, tmp)
file.info(tmp)[ , c('mtime', 'ctime', 'atime')]
# mtime ctime atime
# /tmp/Rtmpzpi8p6/file29e932565c62 2017-05-19 15:03:56 2017-05-19 15:03:56 2017-05-19 15:03:4
顺便说一句,请使用full.names
参数list.files
而不是paste
和sep='/'
。