Wie programmgesteuert zu extrahieren / entpacken Sie eine .7z (7-zip) Datei mit R
Ich versuche zur Automatisierung der Extraktion der Anzahl der Dateien, die komprimiert mit 7-zip. Ich brauche, um diesen Prozess zu automatisieren, weil a) es sind viele Jahre Daten würde ich gern entsperren und b) möchte ich meinen code mit anderen zu verhindern, dass Sie wiederholt den Prozess von hand.
Ich habe sowohl WinRAR und 7-zip auf meinem computer installiert, und ich kann individuell öffnen Sie diese Dateien einfach mit jedem Programm.
Hab ich blickte auf die unzip
untar
und unz
Befehle, aber ich glaube nicht, dass jeder von Ihnen tun, was ich brauche.
Ich weiß nichts über die Kompression, aber wenn es einen Unterschied macht: jede dieser Dateien enthält nur eine Datei und es ist nur eine text-Datei.
Ich würde stark bevorzugen eine Lösung, die nicht erfordern, dass der Benutzer zusätzliche software installieren (wie WinRAR oder 7-Zip) und einen Befehl ausführen, mit shell
, obwohl ich bestätigen, dass Sie diese Aufgabe möglicherweise nicht mit der nur-R und-CRAN-Pakete. Ich glaube wirklich läuft shell.exec
auf diese Dateien mit zusätzlichen Parametern kann die Arbeit auf Computern mit WinRAR installiert, aber wieder, ich möchte vermeiden, dass die installation wenn möglich. 🙂
Läuft Sie den code unten laden Sie die Dateien, die ich versuche zu extrahieren -- den .7z-Dateien in files.data
sind, was erschlossen werden muss.
# 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
Dank!!! 🙂
vereinbart. jetzt bin ich Petitionen, die Leute bei der brasilianischen Volkszählung zu Folgen @dirk Beratung und re-post die Dateien mit einem standard-format 🙂 danke hadley!
das Beispiel zeigt, ist ein pkzip-compresse-Datei nicht ein p7 komprimierte Datei. So wird Ihre standard
unzip()
funktionieren würde. Eine Verwandte Frage wäre, stackoverflow.com/questions/31146263/sys-glob-within-unzipInformationsquelleAutor Anthony Damico | 2013-04-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie
7z
ausführbare Datei in Ihrem Pfad, können Sie einfach verwendensystem
Befehlsystem('7z e -o <output_dir> <archive_name>')
aber kurz, alles von hand, es ist das einzige, was funktioniert, richtig? 🙁
was Sie und hadley sind zu sagen, es ist der nur Antwort. 🙁 warum sollte ich die Threads löschen? andere könnten auch davon profitieren zu wissen, diese Aufgabe ist unmöglich ohne die Installation von externer software
beachten Sie, dass der Befehl
system('7z e -o<output_dir> <archive_name>')
. Mit einem Leerzeichen zwischen -o und dem Verzeichnis, es scheitert!InformationsquelleAutor Chinmay Patil
Diese kann getan werden, mit der
Archiv
- Paket.Sehen https://github.com/jimhester/archive
InformationsquelleAutor jsta