PyDrive Загрузить и удалить - PullRequest
       28

PyDrive Загрузить и удалить

2 голосов
/ 09 февраля 2020

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

#%%
import os
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from googleapiclient.http import MediaFileUpload
g_login = GoogleAuth()
g_login.LocalWebserverAuth()
drive = GoogleDrive(g_login)

#%%
header = 'images/dice'
path = header + str(i) + '.png'
file = drive.CreateFile()
file.SetContentFile(path)
file.Upload()
if file.uploaded:
    print("test")
    os.remove(path)

однако при попытке удаления локальной копии возникает следующая ошибка:

PermissionError: [WinError 32] Процесс не может получить доступ к файлу, поскольку он используется другим процессом: 'images / dice1.png'

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

https://gsuitedevs.github.io/PyDrive/docs/build/html/pydrive.html

он должен автоматически закрыться после загрузки.

Что я здесь наблюдаю?

Примечание. В конце я хочу использовать al oop, что go, для всех файлов в каталоге.

Это вывод:

1
test
---------------------------------------------------------------------------

PermissionError                           Traceback (most recent call last)

<ipython-input-21-2aeb578b5851> in <module>
      9 if file.uploaded:
     10     print("test")
---> 11     os.remove(path)
     12 

PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'images/dice1.png'

enter image description here

1 Ответ

1 голос
/ 12 февраля 2020

Даже если PyDrive не закрывает его для вас, при просмотре кода похоже, что вы можете сделать что-то вроде этого:

...
try:
    file.Upload()
finally:
    file.content.close()
if file.uploaded:
...

Не могли бы вы попробовать, и посмотрите, поможет ли это?

...