You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中用fread读取7z压缩文件报错,求可行解决方案

解决fread结合7z读取压缩文件的报错问题

我来帮你搞定这个问题!你之前的代码报错,核心原因是把shell()函数的执行结果传给了fread,但fread的input参数如果要接收命令的话,应该直接传入命令字符串,而不是命令执行后的输出内容——shell()返回的是命令打印到控制台的文本,不是可被fread识别的命令指令。

正确的实现方式

要达到和unzip -cq类似的效果(直接读取压缩包内的文本内容,不生成中间文件),你需要利用7z的-so参数(表示将解压内容输出到标准输出stdout),然后让fread直接执行这个7z命令:

# 读取gz压缩包里的文本文件
data <- fread(cmd = '7z x -so test.txt.gz', shell = 'cmd.exe')

参数解释

  • -so:7z的核心参数,告诉它不要把解压后的文件保存到磁盘,而是直接输出到控制台的标准流中,这样fread就能直接捕获这个流作为输入数据。
  • x:7z的解压命令,用于提取压缩包内的内容。

额外场景提示

如果你的压缩包有密码,或者需要指定文本编码,可以这样调整:

# 带密码的压缩包
data <- fread(cmd = '7z x -so -pYourPasswordHere test.txt.gz', shell = 'cmd.exe')

# 指定编码(比如GBK)
data <- fread(cmd = '7z x -so test.txt.gz', shell = 'cmd.exe', encoding = 'GBK')

内容的提问来源于stack exchange,提问作者Rafael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:10:12