Обновление кода Python 2 до кода Python 3 для googleads api - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь использовать API Google Ads с Python 3, и у меня возникла проблема с их файлом generate_refresh_token.py. Файл был обновлен для Python 3, но мне нужно отладить его, так как в нем все еще есть код Python 2. Например, операторы print не содержали () в них, и был случай использования 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, и я был бы признателен, если бы кто-то мог помочь мне с этим!

Ответы [ 2 ]

2 голосов
/ 30 мая 2019

Обновить операторы печати. ​​

print ('Access token: {}'.format(flow.credentials.token))
print ('Refresh token: {}'.format(flow.credentials.refresh_token))
1 голос
/ 30 мая 2019

У вас есть опечатка с вашими скобками. Печать должна быть:

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))
...