R、GET 和 GZ 压缩

标签 r rest get rcurl gzip

我正在将客户端构建到 RESTful API 上。一些链接让我可以从服务器下载附件(文件),在最好的情况下这些是 .txt。我只提到 RESTful 部分,因为这意味着我必须在每个帖子中发送一些标题和可能的正文 - 标准的 R 'filename'=URL 逻辑将不起作用。

有时人们将许多 txt 文件打包成一个 zip。这些很尴尬,因为我不知道它们包含什么,直到我下载了很多。

目前,我正在解压缩这些文件,压缩文件(添加 .gz 扩展名)并重新上传它们。然后可以对它们进行索引和下载。

我正在使用 Hadley 的可爱 httr 包,但我看不到解压缩 gz 文件的优雅方法。

使用 read.csv 或类似文件时,任何以 gz 结尾的文件都会自动解压缩(方便!)。使用 httr 或 curl 时的等价物是什么?

content(GET("http://glimmer.rstudio.com/alexbbrown/gz/sample.txt.gz"))
[1] 1f 8b 08 08 4e 9e 9b 51 00 03 73 ...

看起来不错,带有正确 header (1f 8b) 的压缩字节流。现在我需要文本内容,所以我尝试使用 memDecompress,它说它应该这样做:
memDecompress(content(GET("http://glimmer.rstudio.com/alexbbrown/gz/sample.txt.gz")),type="gzip")
Error in memDecompress(content(GET("http://glimmer.rstudio.com/alexbbrown/gz/sample.txt.gz")),  : 
  internal error -3 in memDecompress(2)

这里的正确解决方案是什么?

另外,有没有办法让 R 在不下载所有文件的情况下提取远程 .zip 文件的索引?

最佳答案

以下工作,但似乎有点令人费解:

> scan(gzcon(rawConnection(content(GET("http://glimmer.rstudio.com/alexbbrown/gz/sample.txt.gz")))),"",,,"\n")
Read 1 item
[1] "These are not the droids you are looking for"

关于R、GET 和 GZ 压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16675188/

相关文章:

java - 为什么我会收到内部服务器错误?

php - 向数据库添加参数后,通过Postman POST数据时出现错误

php - CakePHP:防止 URL 中的 GET 表单字段

javascript - AWS Lambda 中的 HTTP GET 只能运行一次

r - 从列表和子列表中提取 xts 对象

r - 避免标签与直接标签和 ggplot2 重叠

c# - Linq 问题不返回学生

Javascript S3 GET Bucket(列表对象)格式化?

r - 如何使用 igraph 识别完全连接的节点集群?

r - ave vs tapply。 unique(ave)==tapply 总是吗?如果是这样,为什么其中之一存在?