我正在尝试自动提取使用7-zip压缩的大量文件。我需要自动化这个过程,因为a)我想要解锁多年的数据; b)我想与他人分享我的代码并防止他们手动重复这个过程。
我的计算机上安装了WinRAR和7-zip,我可以使用任一程序轻松打开这些文件。
我查看了unzip
untar
和unz
命令,但我不相信他们中的任何一个都能满足我的要求。
我对压缩一无所知,但如果它有任何区别:这些文件中的每一个只包含一个文件,而只是一个文本文件。
我非常喜欢不需要用户安装其他软件(如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
谢谢! :)
答案 0 :(得分:18)
可以使用archive
package完成此操作。
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)
答案 1 :(得分:14)
如果您的路径中有7z
个可执行文件,则可以使用system
命令
system('7z e -o <output_dir> <archive_name>')