Я думаю, что наиболее очевидным решением является сохранение предыдущих папок в качестве входного массива.
Добавьте один параметр к вашей функции start_printing
. И заполняйте его, перебирая папки следующим образом.
def start_printing(user_fld_id, service, previous_folders=[]):
flow_of_file = service.files().list(q=" '{0}' in parents ".format(user_fld_id),spaces ='drive').execute()
for item in flow_of_file['files']:
if item['mimeType'] == 'application/vnd.google-apps.folder':
print('Name of File is: {0} of type: {1}'.format(item['name'],item['mimeType']))
folder_name = item['name']
folder_id = item['id']
user_fld_id = folder_id
start_printing(user_fld_id,
service,
previous_folders=previous_folders+[item]) # Added line
else:
print(u'This is content with name = {0} for folder {1} with ID {2}'.format(item['name'],folder_name, item['id']))
file_id_number = item['id']
response = service.files().get_media(fileId = file_id_number).execute()
send_to_another_function(response, folder_name)
Итак, вы можете получить доступ к этому массиву при последующем вызове. В этом случае последний элемент этого массива будет справа над папкой.
Альтернативно вы можете извлекать папку каждый раз через атрибут parents
переменной item
. Но, сделав этот запрос раньше, мы получим одну и ту же информацию дважды.