Подтвердить что ты не робот

Как программно извлечь/распаковать файл .7z (7-zip) с помощью R

Я пытаюсь автоматизировать извлечение нескольких файлов, сжатых с помощью 7-zip. Мне нужно автоматизировать этот процесс, потому что: а) есть многолетние данные, которые я хотел бы разблокировать, и б) я хотел бы поделиться своим кодом с другими и не дать им повторить процесс вручную.

У меня на моем компьютере установлены как WinRAR, так и 7-zip, и я могу индивидуально открывать эти файлы с помощью любой программы.

Я просмотрел команды unzip untar и unz, но я не считаю, что кто-то из них делает то, что мне нужно.

Я ничего не знаю о сжатии, но если это имеет значение: каждый из этих файлов содержит только один файл и это просто текстовый файл.

Я бы предпочел решение, которое не требует от пользователя установки дополнительного программного обеспечения (например, 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

Спасибо!!!:)

4b9b3361

Ответ 1

Если у вас есть 7z исполняемый файл в вашем пути, вы можете просто использовать команду system

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

Ответ 2

Это можно сделать с помощью 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

Ответ 3

system("cmd.exe", input = "set PATH=%PATH%;C:\\Program Files (x86)\\7-Zip\\
                                7z e -oC:\\Users\\YourFolder\\Desktop C:\\Users\\YourFolder\\Desktop\\yourfile.zip")