我试图读取二进制文件的全部内容。类似于以下Python代码:
with open("Male_Moose.jpg") as f:
data = f.read()
print "Length of file: ", len(data)
这是我的R代码:
main <- function()
{
fname <- "Male_Moose.jpg"
contents <- readBin(fname, file.info(fname)$size)
cat(paste("File size: ", nchar(contents, type = "bytes")))
cat("\n\n")
cat(paste("File info size:", file.info(fname)$size))
cat("\n\n")
}
main()
JPG文件大约是1.2兆字节。 Python代码正确地将文件作为blob读入,我可以在内存中找到它的长度。 R不会以同样的方式做事。这是为什么?
[编辑]
R脚本的输出:
File size: 20
File info size: 1261900
答案 0 :(得分:6)
您遗漏了readBin
的第二个参数,这是您要阅读的数据的类型:
readBin(con, what, n = 1L, size = NA_integer_, signed = TRUE,
endian = .Platform$endian)
指定为"raw"
的内容,它将数据作为原始字节的向量读取:
contents <- readBin(fname, "raw", file.info(fname)$size)
length(contents) # not nchar()
答案 1 :(得分:2)
您可能会发现使用jpeg包更容易。
library(jpeg)
MooseImage = readJPEG("Male_Moose.jpg")
然后如果你只想要一个blob
MooseBlob = as.vector(MooseImage)