web-dev-qa-db-ja.com

Rで.7z(7-Zip)ファイルをプログラムで抽出/解凍する方法

7-Zipで圧縮された多数のファイルの抽出を自動化しようとしています。このプロセスを自動化する必要があります。a)ロック解除したいデータが何年もあり、b)コードを他の人と共有して、プロセスが手動で繰り返されないようにしたいからです。

WinRARと7-Zipの両方をコンピューターにインストールしており、どちらのプログラムでもこれらのファイルを個別に簡単に開くことができます。

私はunzipuntarunzコマンドを見て回りましたが、それらのどれもが私が必要とすることをするとは思わない。

圧縮については何も知りませんが、違いがある場合は、これらの各ファイルにはoneファイルのみが含まれ、それは単なるテキストファイルです。

ユーザーが追加のソフトウェア(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

ありがとう!!! :)

29
Anthony Damico

パスに_7z_実行可能ファイルがある場合、単純にsystemコマンドを使用できます

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

15
Chinmay Patil

これは 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)

https://github.com/jimhester/archive を参照してください

18
jsta