PyDrive: невозможно записать файл в определенную папку GDrive

Я пытаюсь скопировать файлы с локального компьютера в определенную папку в GDrive с помощью PyDrive. Если целевая папка еще не существует, я хочу ее создать. Вот соответствующий раздел моего кода:

gfile = drive.CreateFile({'title':'dummy.csv', 
        'mimeType':'text/csv',
        'parent': tgt_folder_id})
gfile.SetContentFile('dummy.csv') 
gfile.Upload() # Upload it

Я уверенно создаю/находим целевую папку правильно, а tgt_folder_id верен, но PyDrive всегда записывает файл в корневую папку моего Google Диска, а не целевую папку, указанную мной через параметр "parent".

Что я здесь делаю неправильно?

Ответ 1

ОК, похоже, что вы это делаете:

gfile = drive.CreateFile({'title':'dummy.csv', 'mimeType':'text/csv',
        "parents": [{"kind": "drive#fileLink","id": tgt_folder_id}]})

Карта "родители" используется в SDK Google Диска, который, как предполагается, должен завершать PyDrive. Но очень немногие примеры, которые я видел с PyDrive, используют "родительский" и, похоже, не работают.

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

Ответ 2

Ahoj @i-am-nik, для перечисления подпапок вы можете использовать слегка измененную строку:

file_list = drive.ListFile({'q': 'trashed=false', 'maxResults': 10}).GetList()
for file1 in file_list:
  print('title: %s, id: %s' % (file1['title'], file1['id']))

Таким образом, он будет перечислять как папки, так и подпапки (конечно, если у вас много файлов, вам может потребоваться изменить значение maxResults или добавить сужающий запрос.