在r中读取zip文件的文件信息

时间:2018-04-30 13:58:47

标签: r

我想读取特定文件夹中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文件的创建日期和时间(在文件夹中)?

2 个答案:

答案 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 ()似乎是解决方案。