python - 在 R 中解压缩 gz 文件,并进行逐位操作
问题描述
目前我有一个 .gz 文件的 csv 文件。我想解压缩它。
难点在于解压.gz文件后,需要逐位操作才能得到正确的格式。
我在 python 中有有效的代码,但我正在努力将其转换为 R
def uncompress_file(file_location_gz, file_location_save):
with open(file_location_gz, "rb") as f:
data = f.read()
data2 = gzip.GzipFile(fileobj=BytesIO(data),
mode='rb').read()
data2 = bytearray(data2)
for i in range(len(data2)):
data2[i] ^= 0x95
with open(file_location_save, 'wb') as f_out:
f_out.write(data2)
任何帮助或建议都会非常有帮助。
解决方案
这是函数在 R 中的样子
decompress_xor <- function(file_in, file_out, xor_byte = 0x95) {
gfin <- gzfile(file_in, "rb")
bytes <- readBin(gfin, "raw", file.info(file_in)$size)
close(gfin)
decoded_bytes <- as.raw(bitwXor(as.numeric(bytes), xor_byte))
rawToChar(decoded_bytes)
writeBin(decoded_bytes, file_out)
}
我们用来gzfile()
处理解压缩,然后将数据作为原始字节读取。我们使用 xor 转换这些字节,然后将这些字节写回。
推荐阅读
- ruby-on-rails - 如何使用 cURL 发布到 Rails?
- ios - 快速从响应中对收到的日期进行排序
- php - PHP file_exists 返回 false,但文件存在
- vue.js - Vue-Router 在有新组件时动态添加新路由
- javascript - 基于路径忽略库
- angular - 我们如何缩小像 app.min.js 这样的 Angular 应用程序并在其他应用程序中使用
- swift - 扩展 AppStorage 以兼容 Int32
- excel - 创建宏来制作数据透视表 + 直方图不起作用
- jupyter-notebook - 为什么我在使用“fine_tune”时不断收到进程条?
- android - 上下文如何向我们提供有关应用程序和活动的信息