Windows系统下R使用list.files()获取不含~缩写的文件完整路径
解决R在Windows下获取文件路径出现~缩写的方案
使用list.files()时必须开启full.names = TRUE参数,才能拿到完整路径前缀,否则仅返回文件名无法做后续转换。
- 方法1:基础包原生函数
normalizePath()直接转换
这是最便捷的无依赖方案,直接对list.files()的返回结果套入该函数即可解析为完整长路径,示例代码:
参数说明:# 原获取文件列表代码 raw_file_list <- list.files(path = "C:/你的/长路径/文件夹", full.names = TRUE) # 转换为无缩写的完整长路径 full_file_paths <- normalizePath(raw_file_list, winslash = "/", mustWork = FALSE)winslash:指定Windows系统下的路径分隔符,设为/可避免反斜杠转义带来的额外处理成本mustWork:设为FALSE时,遇到失效路径不会直接抛出错误,仅返回原路径
- 方法2:使用fs包获取标准长路径
如果你日常已经在使用fs包处理文件系统操作,其内置的dir_ls()函数默认返回标准长路径,不会触发Windows短路径缩写机制,示例代码:
该返回结果可直接通过library(fs) full_file_paths <- dir_ls(path = "C:/你的/长路径/文件夹")as.character()转换为字符串格式的路径使用。
注意事项
- 如果需要批量处理大量路径,
normalizePath()的处理效率完全满足常规使用需求,不需要额外依赖第三方包 - 不要手动通过字符串替换处理~缩写,不同Windows设备的短路径映射规则可能存在差异,手动替换容易出现路径失效问题
内容的提问来源于stack exchange,提问作者Brian Smith
相关产品推荐
相关产品推荐

