Почему библиотека googledrive в R идентифицирует более одного файла с одним файлом в папке Drive? - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь загрузить файл .tif из папки Google Drive (которая экспортируется в него через Google Earth Engine), используя библиотеку googledrive . Однако при вызове функции map я получаю следующую ошибку:

Error: 'file' identifies more than one Drive file.

Мне уже удалось загрузить другие файлы .tif с этим кодом, который работал без каких-либо ошибок. Почему я получаю эту ошибку и как ее устранить? Как вы можете видеть в папке Drive (это publi c), папка содержит только один файл, так почему «file» идентифицирует более одного файла 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)

Ответы [ 2 ]

0 голосов
/ 28 января 2020

В Google Диске можно хранить несколько файлов с одинаковым именем в одной папке. Библиотека googledrive не принимает это и поэтому выдает ошибку. Однако даже после удаления «двойных» файлов ошибка не была устранена. Кажется, что Google Drive также хранит какую-то скрытую запись / кеш файлов, даже когда они удалены. Только удалив всю папку и заново создав ее, я смог устранить ошибку.

0 голосов
/ 24 января 2020

Метод Google Drive API Files: list возвращает по умолчанию массив

Даже если результаты содержат только один файл или вообще не содержат файлов - он все равно будет массивом.

Все, что вам нужно сделать, это получить первый (0) элемент этого массива. Вы можете проверить это, протестировав с помощью Попробуйте этот API .

Я ожидаю, что правильный синтаксис в R будет примерно таким же, как files[0]$name, чтобы получить имя первого (даже если это единственный) файл.

Также: Вы должны реализовать некоторый оператор условия, чтобы убедиться, что список файлов не пуст, прежде чем вы получите имя файла.

...