为什么 R 中的 googledrive 库会识别多个文件而 Drive 文件夹中只有一个文件?

问题描述 投票:0回答:4

我正在尝试使用 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)
r google-drive-api tiff google-earth-engine
4个回答
1
投票

Google Drive API 的方法
Files: list
默认返回一个数组

即使结果只包含一个文件,或者根本没有文件 - 它仍然是一个数组。

您需要做的就是检索该数组的第一个 (

0
) 元素。您可以通过使用尝试此 API 进行测试来验证它。

我希望

R
中的正确语法类似于
files[0]$name
检索第一个(即使是唯一的)文件的名称。

另外:您应该实现一些条件语句来验证 在检索文件名之前,文件列表不为空。


1
投票

Google Drive 允许同一文件夹中存在多个具有完全相同名称的文件。

googledrive
库不接受这一点,因此会抛出错误。然而,即使删除“双”文件后,错误也没有解决。似乎 Google Drive 还保留了某种文件的隐藏记录/缓存,即使文件已被删除。只有删除整个文件夹并重新创建它,我才能解决该错误。


0
投票

更简单的是使用文件名的 id:

as_id("filename_id")

0
投票

同样的问题:尝试使用drive_mv将Drive文件夹上的文件移动到另一个文件夹,但是...

confirm_single_file()
中的错误: !
file
识别多个云端硬盘文件。

即使从 Google 云端硬盘访问时只有文件可见。 识别唯一的文件 ID 很麻烦,并且每次重新生成要移动的文件时都会发生变化,因此这对我来说不起作用。 不明白“0”数组的解法。

复制的解决方案将不胜感激,谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.