opener - zip download
cómo extraer o descomprimir mediante programación un archivo.7z(7-zip) con R (2)
Esto se puede hacer con el paquete de 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)
Estoy intentando automatizar la extracción de varios archivos comprimidos con 7-zip. Necesito automatizar este proceso, porque a) hay muchos años de datos que me gustaría desbloquear yb) me gustaría compartir mi código con otros y evitar que repitan el proceso manualmente.
Tengo WinRAR y 7-zip instalados en mi computadora, y puedo abrir estos archivos individualmente fácilmente con cualquiera de los dos programas.
He unz
comandos unz
y unz
unzip
, pero no creo que ninguno de ellos haga lo que necesito.
No sé nada acerca de la compresión, pero si hay alguna diferencia: cada uno de estos archivos solo contiene un archivo y es solo un archivo de texto .
Preferiría encarecidamente una solución que no requiera que el usuario instale software adicional (como WinRAR o 7-Zip) y ejecute un comando con shell
, aunque reconozco que esta tarea puede ser imposible solo con los paquetes R y CRAN. De hecho, creo que ejecutar shell.exec
en estos archivos con parámetros adicionales podría funcionar en computadoras con WinRAR instalado, pero nuevamente, me gustaría evitar esa instalación si es posible. :)
Ejecutar el código siguiente cargará los archivos que estoy intentando extraer: los archivos .7z en files.data
son los que deben desbloquearse.
# 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
¡¡¡Gracias!!! :)
Si tiene ejecutable 7z
en su ruta, puede usar simplemente el comando del system
system(''7z e -o <output_dir> <archive_name>'')