如何以编程方式使用R提取或解压缩.7z(7-zip)文件

Ant*_*ico 26 zip r 7zip unzip rar

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

我的计算机上安装了WinRAR和7-zip,我可以使用任一程序轻松打开这些文件.

我环顾四周unzip untarunz命令,但我不相信他们中的任何一个都能满足我的需求.

我对压缩一无所知,但如果它有任何区别:这些文件中的每一个只包含一个文件,它只是一个文本文件.

我非常喜欢不需要用户安装其他软件(如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
Run Code Online (Sandbox Code Playgroud)

谢谢!!!:)

jst*_*sta 19

这可以通过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)
Run Code Online (Sandbox Code Playgroud)

请参阅https://github.com/jimhester/archive

  • `archive_extract` 用于提取。 (3认同)
  • 惊人的。我将立即开始转储 7-zip 依赖项。https://github.com/ajdamico/lodown/issues/99 谢谢 (2认同)

Chi*_*til 15

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

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

  • @DirkEddelbuettel ..来自你和哈德利所说的,这是_only_答案.:(为什么我会删除该线程?其他人也可能从知道这项任务是不可能没有安装外部软件受益 (13认同)
  • 完全忽略了“我非常喜欢不需要用户安装其他软件的解决方案”的要求。 (2认同)
  • 请注意该命令是`system('7z e -o <output_dir> <archive_name>')`.在-o和目录之间有一个空格就失败了! (2认同)