将 python 2 代码更新为 googleads api 的 python 3 代码

Posted

技术标签:

【中文标题】将 python 2 代码更新为 googleads api 的 python 3 代码【英文标题】:Updating python 2 code to python 3 code for googleads api 【发布时间】:2019-05-30 06:36:23 【问题描述】:

我正在尝试将 google ads api 与 python 3 一起使用,但我遇到了他们的 generate_refresh_token.py 文件的问题。该文件已针对 python 3 进行了更新,但我需要对其进行调试,因为它仍然包含一些 python 2 代码。例如,打印语句中没有 (),并且有一个使用 raw_input() 而不是 input() 的实例。

无论如何,我收到一条我无法弄清楚的错误消息。有人可以帮我吗?

我试过用谷歌搜索解决方案,但我有点迷路了。

代码从第 110 行开始,到第 122 行结束:

print ('Access token: %s') % flow.credentials.token
print ('Refresh token: %s') % flow.credentials.refresh_token


if __name__ == '__main__':
  args = parser.parse_args()
  configured_scopes = [SCOPE]
  if not (any([args.client_id, DEFAULT_CLIENT_ID]) and
          any([args.client_secret, DEFAULT_CLIENT_SECRET])):
    raise AttributeError('No client_id or client_secret specified.')
  if args.additional_scopes:
    configured_scopes.extend(args.additional_scopes.replace(' ', '').split(','))
  main(args.client_id, args.client_secret, configured_scopes)

代码应该抛出一个我可以使用的访问令牌,但它给了我这个错误:

Access token: %s
Traceback (most recent call last):
  File "generate_refresh_token.py", line 122, in <module>
    main(args.client_id, args.client_secret, configured_scopes)
  File "generate_refresh_token.py", line 110, in main
    print ('Access token: %s') % flow.credentials.token
TypeError: unsupported operand type(s) for %: 'NoneType' and 'str'

我相信这也是 python 2 与 python 3 的问题,如果有人能帮助我解决这个问题,我将不胜感激!

【问题讨论】:

如果我需要提供任何其他信息,请告诉我 【参考方案1】:

更新打印语句。

print ('Access token: '.format(flow.credentials.token))
print ('Refresh token: '.format(flow.credentials.refresh_token))

【讨论】:

【参考方案2】:

你的括号有错别字。打印应该是:

print('Access token: %s'% flow.credentials.token) 
print('Refresh token: %s' % flow.credentials.refresh_token)

为了安全使用格式:

print('Access token: '.format(flow.credentials.token))
print('Refresh token: '.format(flow.credentials.refresh_token))

【讨论】:

以上是关于将 python 2 代码更新为 googleads api 的 python 3 代码的主要内容,如果未能解决你的问题,请参考以下文章

将 Google Ads 转化跟踪代码手动添加到 Facebook 客户聊天中

从 GoogleAds 导入的 BigQuery 显示所有与 CPM 相关的字段,值为 0

Firebase 事件作为 Google Ads 中的转化不起作用

如何使 googleads 库与 Google Ads API v2 弃用保持一致?

为 Google Adwords API 设置客户 ID

请求令牌时,Google API 刷新令牌为无