Search code examples
pythonpython-3.xgoogle-drive-api

Create new folder on Gdrive using pydrive module


Trying to create folder on google drive using pydrive:

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

gauth = GoogleAuth()
gauth.LocalWebserverAuth() 
drive = GoogleDrive(gauth)

Authentication works, I can download some files from my drive, etc.

But can't figure out, how to create new folder. I'm trying:

folder_id = 'parent_folder_id'

file_metadata = {
  'name': 'test_folder',
  'parents': [folder_id],
  'mimeType': 'application/vnd.google-apps.folder'
}
file = drive.files().create(body=file_metadata, fields='id').execute()

This gives error: 'GoogleDrive' object has no attribute 'files'

Seems i missing something from docs, not sure what exactly though.

Any help appreciated.


Solution

  • The python sample code that is used in the create folder example uses google-api-python-client based on the Python Quickstart, You can refer to this Drive API documentation for the list of methods available in google-api-python-client.

    pydrive has a different methods used for Creating and updating file. You need to use CreateFile(metadata) to create an instance of GoogleDriveFile then use Upload()

    Sample Code:

    from pydrive.auth import GoogleAuth
    from pydrive.drive import GoogleDrive
    
    gauth = GoogleAuth()
    gauth.LocalWebserverAuth() 
    drive = GoogleDrive(gauth)
    folder_id = 'parent_folder_id'
    
    file_metadata = {
      'name': 'test_folder',
      'parents': [folder_id],
      'mimeType': 'application/vnd.google-apps.folder'
    }
    
    folder = drive.CreateFile(file_metadata)
    folder.Upload()
    

    Additional Reference:

    TO CREATE A NEW FOLDER IN GOOGLE DRIVE THROUGH PYTHON SCRIPT USING PYDRIVE MODULE