【问题标题】:TypeError: method() takes exactly 1 argument (2 given)类型错误:method() 只需要 1 个参数(给定 2 个)
【发布时间】:2016-01-27 00:50:30
【问题描述】:

我在 Windows 10 上使用 python google drive api,python 2.7.10。

我正在为驱动服务设置一个实例变量。当我尝试运行驱动器服务的方法之一self.service.files().list() 时,就会出现问题。我相信python正在传递对象self和字符串"title = 'Door_Photos' and mimeType = 'application/vnd.google-apps.folder'"是否可以阻止python这样做?

class doorDrive():

def __init__(self, scopes = 'https://www.googleapis.com/auth/drive.metadata.readonly',
             secretFile = 'client_secret.json',
             appName = 'Door Cam'):
    self.SCOPES = scopes
    self.CLIENT_SECRET_FILE = secretFile
    self.APPLICATION_NAME = appName
    self.photoFolderId = ''

    creds = self.getCreds()
    http = creds.authorize(httplib2.Http())
    self.service = discovery.build('drive', 'v2', http=http)
    self.initFolder()

def getCreds(self):
    home_dir = os.path.expanduser('~')
    credential_dir = os.path.join(home_dir, '.credentials')
    if not os.path.exists(credential_dir):
        os.makedirs(credential_dir)
    credential_path = os.path.join(credential_dir,
                               'drive-python-quickstart.json')
    store = oauth2client.file.Storage(credential_path)
    credentials = store.get()
    if not credentials or credentials.invalid:
        flow = client.flow_from_clientsecrets(self.CLIENT_SECRET_FILE, self.SCOPES)
        flow.user_agent = self.APPLICATION_NAME
        credentials = tools.run(flow, store)
        print('Storing credentials to ' + credential_path)
    return credentials

def initFolder(self):
    folders = self.service.files().list("title = 'Door_Photos' and mimeType = 'application/vnd.google-apps.folder'").execute()['items']

【问题讨论】:

    标签: python google-drive-api typeerror


    【解决方案1】:

    您的最后一行是将您的查询字符串直接传递给list(),但您可能应该通过关键字传递它,如下所示:

    def initFolder(self):
        folders = self.service.files().list(q="title = 'Door_Photos' and mimeType = 'application/vnd.google-apps.folder'").execute()['items']
    

    现在请注意查询前面的q=。这将使 Python 将其作为关键字参数而不是位置参数发送。我认为您的错误正在进一步向下级联,因为该函数的第一个参数实际上是orderBy

    您可以在此处查看规范:https://developers.google.com/resources/api-libraries/documentation/drive/v2/python/latest/drive_v2.files.html#list

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多