我正在尝试使用R从包含JSON文件的API下载的LZMA存档中提取文件。在我的计算机上,我可以在Windows资源管理器中手动提取文件,没有任何问题。
此处列出了我的代码(已移除API详细信息):
tempFile <- tempfile()
destDir <- "extracted-files"
if (!dir.exists(destDir)) dir.create(destDir)
download.file("api_url.tar.xz", destfile = tempFile)
untar(tempFile, exdir = destDir)
当我尝试解压缩文件时,收到以下错误消息:
/usr/bin/tar: This does not look like a tar archive
/usr/bin/tar: Skipping to next header
/usr/bin/tar: Exiting with failure status due to previous errors
Warning messages:
1: running command 'tar.exe -xf "C:\Users\XXX\AppData\Local\Temp\RtmpMncPWp\file2eec75e23a15" -C "extracted-files"' had status 2
2: In untar(tempFile, exdir = destDir) :
‘tar.exe -xf "C:\Users\XXX\AppData\Local\Temp\RtmpMncPWp\file2eec75e23a15" -C "extracted-files"’ returned error code 2
我使用的是Windows 10和R版本3.3.1(2016-06-21)。
答案 0 :(得分:0)
虽然它似乎在Mac上完美运行,但要在Windows上工作,您需要打开压缩的.xz文件连接以便以二进制模式读取,然后再将其传递给untar():
download.file(url, tmp)
zz <- xzfile(tmp, open = "rb")
untar(zz, exdir = destDir)
答案 1 :(得分:0)
另一种更简单的解决方案是为download.file()指定'mode'参数,如下所示:
download.fileurl, destfile = tmp, mode = "wb")