使用R语言file.copy函数迁移CSV文件失效的问题排查求助
问题排查与修复方案
我之前写R脚本迁移文件时也踩过一模一样的坑!你的问题核心出在文件路径的完整性上,具体来说:
为什么会出现警告?
你用dir(rawPath, "*.csv", ...)获取到的dataFiles只是文件名列表(比如test1.csv、data2.csv),而不是文件的完整路径。当你调用file.copy(dataFiles, dataPath)时,R会默认在当前工作目录下找这些文件,而不是你指定的rawPath目录,自然找不到文件,就会抛出警告。
修复代码(两种可选方案)
方案一:让dir()直接返回完整路径
给dir()加上full.names = TRUE参数,这样它会直接返回包含目录的完整文件路径:
rawPath <- "./test_dir1" dataPath <- "./test_dir2" # 新增full.names = TRUE,获取完整路径 dataFiles <- dir(rawPath, "*.csv", ignore.case = TRUE, all.files = TRUE, full.names = TRUE) # 先确保目标目录存在(可选但推荐) dir.create(dataPath, recursive = TRUE, showWarnings = FALSE) file.copy(dataFiles, dataPath, overwrite = TRUE )
方案二:手动拼接完整路径
如果不想修改dir()的参数,可以用file.path()手动把目录和文件名拼起来:
rawPath <- "./test_dir1" dataPath <- "./test_dir2" dataFiles <- dir(rawPath, "*.csv", ignore.case = TRUE, all.files = TRUE) # 拼接完整路径 fullFilePaths <- file.path(rawPath, dataFiles) dir.create(dataPath, recursive = TRUE, showWarnings = FALSE) file.copy(fullFilePaths, dataPath, overwrite = TRUE )
额外提示
添加dir.create(dataPath, recursive = TRUE, showWarnings = FALSE)是为了避免目标目录不存在导致的报错——recursive = TRUE会自动创建嵌套目录,showWarnings = FALSE则不会在目录已经存在时弹出无关警告,让脚本更健壮。
内容的提问来源于stack exchange,提问作者ebb
相关产品推荐
相关产品推荐

