34

我正在尝试自动提取一些用 7-zip 压缩的文件。我需要自动化这个过程,因为a)我想解锁多年的数据,b)我想与其他人分享我的代码并防止他们手动重复这个过程。

我的计算机上同时安装了 WinRAR 和 7-zip,我可以使用任何一个程序轻松地单独打开这些文件。

我环顾了unzip untarandunz命令,但我不相信它们中的任何一个都可以满足我的需求。

我对压缩一无所知,但如果它有什么不同的话:这些文件中的每一个都只包含一个文件,而且它只是一个文本文件

我非常喜欢不需要用户安装其他软件(如 WinRAR 或 7-Zip)并使用 执行命令的解决方案shell,尽管我承认仅使用 R 和 CRAN 包可能无法完成此任务。我实际上相信shell.exec在这些带有附加参数的文件上运行可能会在安装了 WinRAR 的计算机上运行,​​但同样,如果可能的话,我想避免这种安装。:)

运行下面的代码将加载我要提取的文件——其中的 .7z 文件files.data是需要解锁的文件。

# 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

谢谢!!!:)

4

2 回答 2

28

这可以通过archive来完成。

library(archive)
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" )
archive(tf)

https://github.com/jimhester/archive

于 2017-05-15T20:58:00.883 回答
23

如果7z路径中有可执行文件,则可以简单地使用system命令

system('7z e -o <output_dir> <archive_name>')

于 2013-04-19T06:39:49.563 回答