gpt4 book ai didi

R:可能截断 >= 4GB 文件

转载 作者:行者123 更新时间:2023-12-04 11:46:10 25 4
gpt4 key购买 nike

我有一个 370MB 的 zip 文件,内容是一个 4.2GB 的 csv 文件。

我做了:

unzip("year2015.zip", exdir = "csv_folder")

我收到了这条消息:
1: In unzip("year2015.zip", exdir = "csv_folder") :
possible truncation of >= 4GB file

你以前有过这种经历吗?你是怎么解决的?

最佳答案

我同意@Sixiang.Hu 的回答,R 的 unzip() 不能可靠地处理大于 4GB 的文件。

你是怎么解决的? :我已经尝试了一些不同的技巧,根据我的经验,使用 R 内置函数的任何结果(几乎)总是在实际结束之前错误地识别文件结束(EOF)标记文件。

我在每晚处理的一组文件中处理这个问题,为了始终如一地以自动化方式处理它,我将下面的函数写入 包装 UNIX 解压。 这基本上就是您对 system(unzip()) 所做的事情,但在其行为上为您提供了更大的灵活性,并允许您更系统地检查错误。

decompress_file <- function(directory, file, .file_cache = FALSE) {

if (.file_cache == TRUE) {
print("decompression skipped")
} else {

# Set working directory for decompression
# simplifies unzip directory location behavior
wd <- getwd()
setwd(directory)

# Run decompression
decompression <-
system2("unzip",
args = c("-o", # include override flag
file),
stdout = TRUE)

# uncomment to delete archive once decompressed
# file.remove(file)

# Reset working directory
setwd(wd); rm(wd)

# Test for success criteria
# change the search depending on
# your implementation
if (grepl("Warning message", tail(decompression, 1))) {
print(decompression)
}
}
}

笔记:

该函数做了一些我喜欢和推荐的事情:
  • 用途 system2超过系统因为 the documentation说“system2 是一个比系统更便携、更灵活的界面”
  • 分隔 directoryfile参数,并将工作目录移动到 directory争论;根据您的系统,解压缩(或您选择的解压缩工具)对于在工作目录外解压缩文件非常挑剔
  • 它不是纯粹的,但重置工作目录是朝着具有更少副作用的功能迈出的重要一步
  • 从技术上讲,您可以在没有这个的情况下做到这一点,但根据我的经验,使函数变得更加冗长比生成文件路径和记住解压缩 CLI 标志更容易
  • 我将它设置为使用 -o 标志在重新运行时自动覆盖,但您可以提供任意数量的参数
  • 包括 .file_cache允许您跳过解压缩的参数
  • 如果您正在测试在解压文件上运行的进程,这会派上用场,因为 4GB 以上的文件往往需要一些时间来解压
  • 在这个例子中被注释掉了,但是如果你知道解压后你不需要存档,你可以内联删除它
  • system2 命令将标准输出重定向到解压缩,一个字符向量
  • if + grepl最后检查在标准输出中查找警告,如果找到表达式
  • 则打印标准输出

    关于R:可能截断 >= 4GB 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42740206/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com