Загрузка всех файлов в определенную папку с помощью PyDrive

Мой Google Диск выглядит примерно так:

картинка1.jpg

песня1.mp3

а/б/file1.txt

а/б/file2.txt

а/б/файл3.jpg

а/б/файл4.m4a

a/b/...

Я хочу использовать PyDrive для загрузки каждого файла в папке b. Просмотрев документацию и проверив StackOverflow, я до сих пор не могу понять, как это сделать. Как мне загрузить все файлы в папку b (которая содержится в папке a) с помощью PyDrive. Кроме того, если это уместно, обратите внимание, что папка b содержит тысячи файлов.


person James Shapiro    schedule 29.10.2017    source источник


Ответы (1)


Я понял. В основном вам нужно использовать идентификатор файла для просмотра или загрузки содержимого папки.

Предполагая, что file_list является корневым каталогом:

for file1 in file_list:
    if file1['title'] == '[name_of_target_folder]':
        folder_id = file1['id']

затем

> folder_id 
> 'WIU1xyz19g83abcdefg'

(Например)

получить каждый файл в папке:

file_list = drive.ListFile({'q': "'{}' in parents and trashed=false".format(folder_id)}).GetList()

скачать каждый файл в «папке»:

for i, file1 in enumerate(sorted(file_list, key = lambda x: x['title']), start=1):
    print('Downloading {} from GDrive ({}/{})'.format(file1['title'], i, len(file_list)))
    file1.GetContentFile(file1['title'])
person James Shapiro    schedule 29.10.2017
comment
Загрузка каждого файла по отдельности кажется невероятно медленной, когда я запускаю его. Нет ли способа просто захватить весь каталог сразу? - person sh37211; 27.04.2019
comment
@james - у меня около 30 тысяч файлов, а команда ListFile занимает много времени - есть какие-нибудь рекомендации ?! - person user702846; 15.02.2020
comment
@ user702846 Я думаю, это, вероятно, то, что вы ищете: pythonhosted.org/PyDrive/ (см. второй раздел о нумерации страниц/итерациях). - person James Shapiro; 15.02.2020