Procédure de programmation pour extraire / décompresser un .7z (7-zip), le fichier à R

Je suis en train d'automatiser l'extraction d'un certain nombre de fichiers compressés avec 7-zip. J'ai besoin d'automatiser ce processus, parce que a) il y a de nombreuses années de données, je voudrais débloquer et b), je voudrais partager mon code avec les autres et les empêcher de répéter le processus à la main.

J'ai WinRAR et 7-zip est installé sur mon ordinateur, et je peux individuellement ouvrir ces fichiers facilement avec un de ces programmes.

J'ai regardé autour de la unzip untar et unz commandes, mais je ne crois pas qu'aucun d'entre eux de faire ce dont j'ai besoin.

Je ne sais rien à propos de la compression, mais si cela fait une différence: chacun de ces fichiers contient uniquement un fichier et c'est simplement un fichier texte.

Je vous recommande de préférer une solution qui ne nécessite pas l'utilisateur à installer de logiciel supplémentaire (comme WinRAR ou 7-Zip) et exécuter une commande avec shell, même si je reconnais que cette tâche pourrait être impossible avec seulement la R et CRAN paquets. En fait je crois exécution shell.exec sur ces fichiers avec des paramètres supplémentaires peuvent fonctionner sur des ordinateurs avec WinRAR installé, mais encore une fois, je voudrais éviter que l'installation si possible. 🙂

L'exécution du code ci-dessous va charger les fichiers que je suis en train d'extraire le .Fichiers 7z dans files.data sont ce qui doit être déverrouillé.

# 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

Merci!!! 🙂

  • La meilleure solution serait un package qui peut lire et écrire des fichiers 7z en utilisant soit la norme API de connexion ou via des fichiers temporaires sur le disque. Mais je ne pense pas que ce paquet existe.
  • d'accord. maintenant, je suis interpellé les gens du brésilien recensement de suivre @dirk, les conseils et le re-poster les fichiers avec un format standard 🙂 merci hadley!
  • l'exemple de votre démonstration est un pkzip compresse fichier n'est pas un p7 fichier compressé. Si votre standard unzip() serait de travailler. Une question connexe serait stackoverflow.com/questions/31146263/sys-glob-within-unzip