如何使用arrow::read_dataset()仅读取指定目录下的文件?
关于
arrow::read_dataset()读取指定目录文件的解决方案 问题1:仅读取匹配“per”模式目录下的文件
有两种无需复制数据的简洁实现方式:
方式一:用
glob参数直接匹配路径
借助通配符模式指定目标文件路径,直接在read_dataset中配置:arrow::read_dataset( mydatafolder, format = "csv", glob = "*/per/*.csv" )这里的
*/per/*.csv会匹配所有一级子目录(如region1、region2)下per子目录中的所有csv文件。方式二:先筛选路径再传入
先用文件工具筛选出所有per目录下的csv文件路径,再传给read_dataset的sources参数:# 获取目标文件路径 target_files <- fs::dir_ls( mydatafolder, recurse = TRUE, glob = "*/per/*.csv" ) # 读取数据集 arrow::read_dataset( sources = target_files, format = "csv" )
问题2:能否传入字符串向量指定要读取的文件夹/文件?
完全可以,arrow::read_dataset()的sources参数支持接收字符串向量,向量元素可以是具体文件路径或目录路径。
比如直接指定所有per目录的路径:
# 获取所有per目录的路径 target_dirs <- fs::dir_ls( mydatafolder, recurse = TRUE, type = "directory", glob = "*/per" ) # 读取指定目录下的csv文件 arrow::read_dataset( sources = target_dirs, format = "csv" )
这样就会仅读取指定目录下的符合格式的文件,无需复制数据。
内容的提问来源于stack exchange,提问作者LucasMation
相关产品推荐
相关产品推荐

