作为较大脚本的一部分,我需要将ALL< .csv>文件从一个目录移动到另一个目录。我写了一个简单的脚本来做到这一点,而且工作正常,但是由于某种原因,它现在不起作用了,我很疯狂地试图弄清楚我在做错了什么。
代码是:
rawPath <- "./test_dir1"
dataPath <- "./test_dir2"
dataFiles <- dir(rawPath, "*.csv", ignore.case = TRUE, all.files = TRUE)
file.copy(dataFiles, dataPath, overwrite = TRUE )
但是我会收到以下错误:
警告消息:
1: In file.copy(dataFiles, dataPath, overwrite = TRUE) : problem copying .test_dir111085.lis.csv to C:UsersDesktoptest_dir211085.lis.csv: No such file or directory
One error message for each file
请查找试用目录和文件,这些目录和文件是我在以下链接中拥有的简化版本:https://www.dropbox.com/sh/7eqvyugc472w19i/aacijlytb4s55x0ga1hmkqka?dl = 0
任何帮助将不胜感激。谢谢!
您的问题是您已经提取了相对于rawPath
的文件名,然后在使用其他目录时尝试在file.copy
中使用它。运行代码,查看dataFiles
:
dataFiles
# [1] "11085.lis.csv" "13087.lis.csv" "17089.lis.csv" "5081.lis.csv" "7083.lis.csv"
你想要
file.copy(paste(rawPath, dataFiles, sep = .Platform$file.sep), dataPath, overwrite = TRUE)
# [1] TRUE TRUE TRUE TRUE TRUE
或替代:
file.copy(file.path(rawPath, dataFiles), dataPath, overwrite = TRUE)
# [1] TRUE TRUE TRUE TRUE TRUE
复制:
dir.create("test_dir1")
dir.create("test_dir2")
files <- paste0(c(5081, 7083, 11085, 13087, 17089), ".lis.csv")
file.create(paste("test_dir1", files, sep = .Platform$file.sep))
# [1] TRUE TRUE TRUE TRUE TRUE
dir("test_dir1")
# [1] "11085.lis.csv" "13087.lis.csv" "17089.lis.csv" "5081.lis.csv" "7083.lis.csv"
dir("test_dir2")
# character(0)
rawPath <- "./test_dir1"
dataPath <- "./test_dir2"
dataFiles <- dir(rawPath, "*.csv", ignore.case = TRUE, all.files = TRUE)
# To reproduce the error:
file.copy(dataFiles, dataPath, overwrite = TRUE )
# To run without error:
file.copy(file.path(rawPath, dataFiles), dataPath, overwrite = TRUE)