我想读取特定文件夹中zip文件的时间(时间戳)。我试过这个:
file.info("C:/Users/foo/")$mt
这似乎读取了文件夹中其他非zipt文件的所有时间戳。
我也用过
file.info(list.files("C:/Users/foo ", pattern=".zip"))
这导致所有变量的NA:size,isdir,mtime等都是< NA>
list.files("C:/Users/foo ", pattern=".zip"))
按预期显示zip文件。
问:如何阅读zip文件的创建日期和时间(在文件夹中)?
答案 0 :(得分:0)
我首先忽略了一个或两个拼写错误:Find.file
不存在,尽管可能,但我并不经常在路径末端看到一个空格。
让我告诉你逻辑遗漏的地方:
list.files("c:/Users/foo", pattern=".zip")
# [1] "file1.zip" "file2.zip"
好的,到目前为止一直很好。
file.info(list.files("c:/Users/foo", pattern=".zip"))
# size isdir mode mtime ctime atime exe
# file1.zip NA NA <NA> <NA> <NA> <NA> <NA>
# file2.zip NA NA <NA> <NA> <NA> <NA> <NA>
好的,这就是问题所在。为什么?让我们通过查看一个特定文件来分解它。工作list.files
的第一次返回是file1,让我们尝试:
file.info("file1.zip")
# size isdir mode mtime ctime atime exe
# file1.zip NA NA <NA> <NA> <NA> <NA> <NA>
还是个问题。让我们看看我们在哪里......
getwd()
# [1] "c:/Users/foo/somewhere/else"
file.info
不知道您为path=
提供的list.files
参数:它假设您提供的是文件名的绝对路径或相对路径。你是:一个相对于当前目录的路径。如果您full.names=TRUE
提供所有列出文件的完整路径,您会看到:
list.files("c:/Users/foo", pattern=".zip", full.names=TRUE)
# [1] "c:/Users/foo/file1.zip" "c:/Users/foo/file2.zip"
这是为其他功能做好准备。从这里开始,file.info(...)
应该可以正常工作。
file.info(list.files(path="c:/Users/foo", pattern=".zip", full.names=TRUE))
# size isdir mode mtime ctime atime exe
# c:/Users/foo/file1.zip 0 FALSE 666 2018-04-30 07:31:24 2018-04-30 07:31:24 2018-04-30 07:31:24 no
# c:/Users/foo/file2.zip 0 FALSE 666 2018-04-30 07:31:26 2018-04-30 07:31:26 2018-04-30 07:31:26 no
答案 1 :(得分:0)
这似乎有效:
file.info(list.files("C:/Users/foo ", pattern=".zip", full.names=TRUE)) $mt
将full.names=TRUE
添加到list.files ()
似乎是解决方案。