如何使用googleapi客户端创建Python代码

如何使用googleapi客户端创建Python代码,python,python-3.x,google-cloud-platform,google-api-client,service-accounts,Python,Python 3.x,Google Cloud Platform,Google Api Client,Service Accounts,我在下面的代码中列出了一个特定项目的谷歌云服务帐户 import os from googleapiclient import discovery from gcp import get_key """gets all Service Accounts from the Service Account page""" os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = get_key() service = discovery.build('iam

我在下面的代码中列出了一个特定项目的谷歌云服务帐户

import os
from googleapiclient import discovery
from gcp import get_key

"""gets all Service Accounts from the Service Account page"""

os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = get_key()

service = discovery.build('iam', 'v1')

project_id = 'projects/<google cloud project>'

request = service.projects().serviceAccounts().list(name=project_id)
response = request.execute()

accounts = response['accounts']

for account in accounts:
    print(account['email'])
导入操作系统
从GoogleAppClient导入发现
从gcp导入获取密钥
“”“从服务帐户页获取所有服务帐户”“”
os.environ[“谷歌应用程序凭据”]=获取密钥()
service=discovery.build('iam','v1')
project_id='projects/'
请求=服务.projects().serviceAccounts().list(名称=项目id)
response=request.execute()
账户=响应['accounts']
对于账户中的账户:
打印(帐户['email'])
这段代码工作正常,可以根据需要打印帐户。我想弄明白的是:

我在哪里可以看到如何构造这样的代码?我找到了一个站点,它引用了,但我似乎不知道如何从中生成上面的代码。我可以看到服务帐户列表,但它仍然没有给我足够的信息

还有别的地方我应该自学吗。非常感谢您提供的任何信息,这样我就不会把剩下的头发拔掉了


谢谢,Eric

您可以使用安装了GoogleAppClient的
ipython
,例如:

sudopip安装——升级谷歌api python客户端

您可以转到交互式python控制台并执行以下操作:

from googleapiclient import discovery
dir(discovery)
help(discovery)
dir
-提供对象拥有的所有条目-因此:

a = ''
dir(a)
将告诉您可以对字符串对象执行什么操作。执行
help(a)
将为字符串对象提供帮助。你可以做北斗七星:

署长(发现) #然后举例来说
帮助(discovery.re)

你可以分步调用你的脚本,看看结果是什么,打印它,做一些研究,做一些事情-做
%history
来打印你的会话,还有可以作为脚本触发的解决方案。

让我与你分享,这里有一个关于如何构建一个脚本的详细说明,比如你共享的脚本,每一行代码意味着什么。它是从ML引擎的文档中提取的,而不是从IAM中提取的,但是它使用的是相同的Python-Google-API客户端库,所以只需忽略对ML的引用,其余的内容对您很有用

在任何情况下,这里都是代码的注释版本,以便您更好地理解:

# Imports for the Client API Libraries and the key management
import os
from googleapiclient import discovery
from gcp import get_key

# Look for an environment variable containing the credentials for Google Cloud Platform
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = get_key()

# Build a Python representation of the REST API
service = discovery.build('iam', 'v1')

# Define the Project ID of your project
project_id = 'projects/<google cloud project>'

"""Until this point, the code is general to any API
From this point on, it is specific to the IAM API"""

# Create the request using the appropriate 'serviceAccounts' API
# You can substitute serviceAccounts by any other available API
request = service.projects().serviceAccounts().list(name=project_id)

# Execute the request that was built in the previous step
response = request.execute()

# Process the data from the response obtained with the request execution
accounts = response['accounts']
for account in accounts:
    print(account['email'])
#为客户端API库和密钥管理导入
导入操作系统
从GoogleAppClient导入发现
从gcp导入获取密钥
#查找包含Google云平台凭据的环境变量
os.environ[“谷歌应用程序凭据”]=获取密钥()
#构建RESTAPI的Python表示形式
service=discovery.build('iam','v1')
#定义项目的项目ID
project_id='projects/'
“”“在此之前,该代码对任何API都是通用的
从这一点开始,它是特定于IAM API的
#使用适当的“serviceAccounts”API创建请求
#您可以用任何其他可用API替换serviceAccounts
请求=服务.projects().serviceAccounts().list(名称=项目id)
#执行上一步中生成的请求
response=request.execute()
#处理通过请求执行获得的响应中的数据
账户=响应['accounts']
对于账户中的账户:
打印(帐户['email'])
一旦您理解了代码的第一部分,最后几行就特定于您正在使用的API,在本例中,这就是API。在这个链接中,您可以找到有关可用方法及其作用的详细信息

然后,您可以按照共享的方法查看如何调用这些方法。例如,在您共享的代码中,所使用的方法依赖于API的Python表示形式
service
,然后沿着最后一个链接中的方法树,如
projects()
,然后是
serviceCounts()
,最后是特定的
list()
方法,最后出现在
request=service.projects().servicecomports().list(name=project\u id)

最后,如果您对其他可用的API感兴趣,请参阅以了解更多信息


我希望我对您的代码所做的评论能够有所帮助,并且共享的文档能够让您更容易理解如何编写这样的代码。

这正是我想要的。那是丢失的那块。你对我代码的破坏是锦上添花。谢谢很高兴我能帮忙!