【发布时间】:2013-04-12 08:23:07
【问题描述】:
我正在尝试自动提取大量使用 7-zip 压缩的文件。我需要自动化这个过程,因为 a) 我想解锁多年的数据 b) 我想与他人共享我的代码并防止他们手动重复该过程。
我的电脑上同时安装了 WinRAR 和 7-zip,我可以使用任何一个程序轻松地单独打开这些文件。
我查看了 unzip untar 和 unz 命令,但我不相信它们中的任何一个都能满足我的需求。
我对压缩一无所知,但如果它有什么不同的话:这些文件中的每一个都只包含一个文件,而且它只是一个文本文件。 p>
我非常喜欢不需要用户安装其他软件(如 WinRAR 或 7-Zip)并使用shell 执行命令的解决方案,尽管我承认仅使用 R 和 CRAN 包可能无法完成此任务.我实际上相信在这些带有附加参数的文件上运行shell.exec 可能适用于安装了 WinRAR 的计算机,但同样,我想尽可能避免安装。 :)
运行下面的代码将加载我试图提取的文件——files.data 中的 .7z 文件是需要解锁的。
# create a temporary file and temporary directory, download the file, extract the file to the temporary directory
tf <- tempfile() ; td <- tempdir()
file.path <- "ftp://ftp.ibge.gov.br/Orcamentos_Familiares/Pesquisa_de_Orcamentos_Familiares_2008_2009/Microdados/Dados.zip"
download.file( file.path , tf , mode = "wb" )
files.data <- unzip( tf , exdir = td )
# how do i unzip ANY of these .7z files?
files.data
谢谢!!! :)
【问题讨论】:
-
最好的解决方案是使用标准连接 API 或通过磁盘上的临时文件读取和写入 7z 文件的包。但我认为该软件包不存在。
-
同意。现在我正在请求巴西人口普查的人们遵循@dirk 的建议并以标准格式重新发布文件:) 谢谢哈德利!
-
您展示的示例是 pkzip 压缩文件而不是 p7 压缩文件。所以你的标准
unzip()可以工作。一个相关的问题是stackoverflow.com/questions/31146263/sys-glob-within-unzip