Как удалить все файлы с определенным расширением в Google Drive - PullRequest
0 голосов
/ 02 октября 2019

У меня есть около 200k файлов с расширением .tif в моей корневой папке на диске Google, которые мне нужно удалить.

Код Python, который я написал, только передает / удаляет несколько файлов, которые мы можем видеть в экземпляре (нам нужно прокрутить диск вниз и позволить им «загрузиться», чтобы увидеть больше из них)

Я также хочу удалить все другие файлы, если для этого есть ярлык.

Cntl + A тоже не работает, он просто выбирает те же несколько файлов, которые мы можем видеть в экземпляре.

import shutil
import os

source = '/content/gdrive/My Drive'
dest1 = '/content/gdrive/My Drive/toDelete'


files = os.listdir(source)

for f in files:
    if (f.endswith(".tif")):
        shutil.move(f, dest1)

dir_name = "/content/gdrive/My Drive"
test = os.listdir(dir_name)

for item in test:
    if item.endswith(".tif"):
        os.remove(os.path.join(dir_name, item))

Ответы [ 2 ]

1 голос
/ 02 октября 2019

Сначала вам нужно найти все файлы, которые содержатся в имени и находятся в вашем корневом каталоге, как только у вас есть такие, вы можете начать их удаление.

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

page_token = Нет

while True:
    response = drive_service.files().list(q="name contains '.tif' and 'root' in parents",
                                          spaces='drive',
                                          fields='nextPageToken, files(id, name)',
                                          pageToken=page_token).execute()
    for file in response.get('files', []):
        # Process change
        print 'Found file: %s (%s)' % (file.get('name'), file.get('id'))
        #drive_service.files().delete(fileId=file.get('id')).execute()
    page_token = response.get('nextPageToken', None)
    if page_token is None:
        break
0 голосов
/ 02 октября 2019
  1. Использовать glob.
  2. Использовать pathlib для манипулирования путями.
import pathlib
import shutil

source = pathlib.Path('/content/gdrive/My Drive')
dest1 = pathlib.Path('/content/gdrive/My Drive/toDelete')
dest1.mkdir(exist_ok=True)

for f in source.glob("*.tif"):
    shutil.move(f, dest1.joinpath(f.name))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...