у вас есть детали, и да, многие примеры все еще используют его.
ользую сервисы API Google в некоторых скриптах и у меня возникают проблемы. Эта ошибка что-то странное, но здесь мы идем. У меня есть скрипт, который перечисляет мои файлы на Google Диске.
from apiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
creds = tools.run_flow(flow, store)
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'],f['id'])
Работает отлично, скачиваюclient_secret.json
из Google API и сохраните его в той же папке, затем я запускаю скрипт, чтобы проверить все в порядке.
Затем я начинаю редактировать свой файл, чтобы изменить способ его выполнения и не читать файл, вместо этого вызвать скрипт и отправитьID клиента а такжеclient_secret Строки к сценарию, и окончательная версия такова:
import sys
from apiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
# ID and SECRET arguments
client_id = sys.argv[1]
client_secret = sys.argv[2]
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
def listFiles(drive):
"""Receive the service and list the files"""
files = drive.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'],f['id'])
def main():
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.OAuth2WebServerFlow(client_id, client_secret, SCOPES)
creds = tools.run_flow(flow, store, tools.argparser.parse_args())
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
listFiles(DRIVE)
if __name__ == "__main__":
main()
Когда я запускаю эту новую версию скрипта в первый раз, он работает, потому что скрипт в старой версии создалstorage.json
файл. Затем я перемещаю свой скрипт новой версии в другую папку или компьютер (гдеstorage.json
файл не существует), чтобы проверить, работает ли он, а затем я получаю это:
$ python3 drive_list.py asdasdasdsa jijfkljflksdjflksdj
/usr/local/lib/python3.4/dist-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access storage.json: No such file or directory
warnings.warn(_MISSING_FILE_MESSAGE.format(filename))
usage: drive_list.py [--auth_host_name AUTH_HOST_NAME]
[--noauth_local_webserver]
[--auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT ...]]]
[--logging_level {DEBUG,INFO,WARNING,ERROR,CRITICAL}]
drive_list.py: error: unrecognized arguments: asdasdasdsa jijfkljflksdjflksdj
Предупреждение о файле storage.json является нормальным и появляется в обеих версиях скрипта, является частью oauth2client.
Это часть курьезов, почему аргументы признаются, когдаstorage.json
файл существует (ТОЛЬКО создан с чтениемclient_secret.json
)? если при первом запуске скрипта создается файл. Действительно странно эта ошибка, и я просто пытаюсь выяснить, что именно происходит. Если кто-то может мне помочь, я буду очень благодарен.