Удалить элементы из списка диктов, содержащих мух гугл диск - PullRequest
0 голосов
/ 31 мая 2019

Мне нужно удалить некоторые предметы из списка диктов. Этот список создается при обращении к Google Drive Rest Api.

Я пробовал несколько примеров кода, но не могу заставить его работать. Я новичок в Python.

#this is the Google Api call
theFiles = drive_service.files().list(fields="files(id,name,modifiedTime, size, fileExtension)").execute()

#here I am trying to iterate the results and delete all items that refer to a "temp" file:

for k, v in theFiles.items():
    if v[4]=="tmp":
        del theFiles[k]

Я ожидал, что записи, содержащие расширение "tmp", будут удалены из этого списка, однако я не могу заставить его работать.

Я подумал, что v[4] может означать поле "fileExtension" в словаре. Однако, когда я отлаживаю, я вижу, что v[4] содержит весь элемент, например:

{'fileExtension': 'docx', 'id': '1u7zrCm3waGr9CiEmPl...F2acV7NvC', 'modifiedTime': '2019-05-03T18:59:19.000Z', 'name': '~$ LENGUA PROG.docx', 'size': '162'}

Пожалуйста, помогите мне понять, как написать правильный код для удаления элементов с расширением ".tmp".

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

Спасибо, ребята, за вашу помощь, которая дала мне подсказку, как это сделать.После некоторых исследований я использовал понимание:

dicFiles[:]  = [x for x in dicFiles if x['name'].endswith('.tmp')]

Это делает работу.

0 голосов
/ 31 мая 2019

Вы можете использовать функцию enumerate () для генерации индекса вместе с элементами последовательности, по которой вы проходите цикл.Я предполагаю, что элементы похожи на это:

items = [{'fileExtension': 'docx', 'id': '1u7zrCm3waGr9CiEmPl...F2acV7NvC',
 'modifiedTime': '2019-05-03T18:59:19.000Z',
'name': '~$ LENGUA PROG.docx', 'size': '162'}]

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

for index,item in enumerate(items):
    if item['fileExtension'] =="tmp":
        del items[index]
...