我正在尝试使用 googledrive 库从我的 Google Drive 文件夹(通过 Google Earth Engine 导出到该文件夹)下载 .tif 文件。但是,当调用
map
函数时,出现以下错误:
Error: 'file' identifies more than one Drive file.
我已经成功地使用此代码下载了其他 .tif 文件,并且没有任何错误。为什么会出现此错误?如何解决?正如您在 Drive 文件夹(它是公共的)中看到的,该文件夹仅包含一个文件,那么为什么“文件”会标识多个 Drive 文件呢?
代码:
library(googledrive)
library(purrr)
## Store the URL to the folder
folder_url <- "https://drive.google.com/drive/folders/1Qdp0GN7_BZoU70OrpbEL-vIBBxBa1_Db"
## Identify this folder on Google Drive
## let googledrive know this is a file ID or URL, as opposed to file name
folder <- drive_get(as_id(folder_url))
## Identify files in the folder
files <- drive_ls(folder, pattern = "*.tif")
# Download all files in folder
map(files$name, overwrite = T, drive_download)
Files: list
默认返回一个数组即使结果只包含一个文件,或者根本没有文件 - 它仍然是一个数组。
您需要做的就是检索该数组的第一个 (
0
) 元素。您可以通过使用尝试此 API 进行测试来验证它。
我希望
R
中的正确语法类似于
files[0]$name
检索第一个(即使是唯一的)文件的名称。
另外:您应该实现一些条件语句来验证 在检索文件名之前,文件列表不为空。
Google Drive 允许同一文件夹中存在多个具有完全相同名称的文件。
googledrive
库不接受这一点,因此会抛出错误。然而,即使删除“双”文件后,错误也没有解决。似乎 Google Drive 还保留了某种文件的隐藏记录/缓存,即使文件已被删除。只有删除整个文件夹并重新创建它,我才能解决该错误。
更简单的是使用文件名的 id:
as_id("filename_id")
同样的问题:尝试使用drive_mv将Drive文件夹上的文件移动到另一个文件夹,但是...
confirm_single_file()
中的错误:
! file
识别多个云端硬盘文件。
即使从 Google 云端硬盘访问时只有文件可见。 识别唯一的文件 ID 很麻烦,并且每次重新生成要移动的文件时都会发生变化,因此这对我来说不起作用。 不明白“0”数组的解法。
复制的解决方案将不胜感激,谢谢!