Отказано в разрешениях на скачивание файла из Dropbox API в Python - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь загрузить CSV-файл из Dropbox, используя их библиотеку в Python, но у меня возникла проблема, связанная с попытками получить разрешения, необходимые для его фактической загрузки в компьютер.

Сообщение об ошибке, которое я получаю в любом случае, таково:

PermissionError: [Errno 13] Отказано в доступе: 'my_directory'

Итак, я попробовал только два решения, которые я нахожу, исследуя: 1) измените режим каталога на '0o777', используя os.chmod(), и 2) запустите программу от имени администратора. Но даже с обоими я все еще не получаю права на запись файла на мой локальный компьютер. Также стоит отметить, что имя файла и каталог, который я пытаюсь записать, не имеют одинакового имени.

import os
import dropbox

local_dir = 'absolute_path_to_directory'

os.chmod(local_dir, 0o777)
dbx = dropbox.Dropbox('my_token_here')
dbx.files_download_to_file(local_dir, 'path_to_file_in_dropbox')

Я бы подумал, что, запустив такую ​​программу от имени администратора и изменив права доступа к каталогу, у меня будут права на загрузку файла в нее. Но я все еще получаю PermissionError, которую я отметил выше.

Любая помощь или понимание того, что может быть причиной проблемы, будет высоко ценится.

1 Ответ

0 голосов
/ 10 января 2019

Согласно документации chmod вы можете установить флаг только для чтения, все остальные биты игнорируются. Однако это не может быть проблемой.

Глядя на форум dropbox , похоже, что вы можете пропустить символ '/' вместе с именем файла, а не только каталог.

dbx.files_download_to_file(j, '/'+ j)

Согласно Грег

Вам необходимо использовать полный путь при указании файла, который вы хотите загрузить. Использование files_list_folder и files_list_folder_continue даст вам каждую запись, и вы можете получить полный путь из возвращенного (File) Metadata.path_lower. (Т.е. используйте entry.path_lower вместо '/'+entry.name.)

...