image_url = sys.argv [1] IndexError: индекс списка вне диапазона - PullRequest
0 голосов
/ 14 января 2019

У меня проблема со следующим разделом кода Python:

import sys  
import requests  
import firebase_admin  
from firebase_admin import credentials  
from firebase_admin import storage  
image_url = sys.argv[1]  
cred = credentials.Certificate('certificate.json')  
firebase_admin.initialize_app(cred,{'storageBucket':'gs://rpi-demo-6d21d.appspot.com'})  
bucket = storage.bucket()  
image_data = requests.get(image_url).content  
blob = bucket.blob('happy.jpg')  
blob.upload_from_string(image_data,content_type='image/jpg')  
print(blob.public_url)

В частности, ошибка выглядит следующим образом:

Traceback (most recent call last):
File "demo4.py", line 6, in <module>
image_url = sys.argv[1]
IndexError: list index out of range

1 Ответ

0 голосов
/ 16 января 2019

sys.argv список заполняется из аргументов командной строки, передаваемых в сценарий, поэтому, если ничего не предоставлено, ожидается ошибка типа

Traceback (most recent call last):
File "demo4.py", line 6, in <module>
image_url = sys.argv[1]
IndexError: list index out of range

Простое воспроизведение - поставить

import sys
print(sys.argv[1])

in demo.py и запустите его, используя python demo.py. Вы получите вывод

$ python demo.py
Traceback (most recent call last):
  File "demo.py", line 2, in <module>
    print(sys.argv[1])
IndexError: list index out of range

но если вы передадите ему аргумент с помощью python demo.py foo, вы получите желаемый результат:

$ python demo.py foo
foo

Специально для вашего примера, похоже, что при вызове сценария demo4.py вы не передаете аргумент командной строки image url. Вы можете передать его, используя python demo4.py <image_url_goes_here>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...