【发布时间】:2019-01-14 19:28:49
【问题描述】:
我对以下 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
【问题讨论】:
-
错误是说您在调用它时没有将参数传递给
demo4.py。确保在调用它时传递所有必需的参数 -python demo4.py <url_goes_here>. -
你能帮我举几个例子吗?
-
我们经常使用
if sys.argv[1:]: x = sys.argv[1]。换句话说,在尝试访问元素之前,首先检查sys是否足够大。如果它不够大,请定义某种默认值,或引发错误。如果您在尝试使用它之前print(sys.argv)可能会有所帮助。尝试各种输入。 -
好吧,我已经为您的命令提供了一个示例,但一个更小的示例是:您可以将
import sys print(sys.argv[1])放入demo.py并尝试使用python demo.py运行它。你会得到$ python demo.py Traceback (most recent call last): File "demo.py", line 3, in <module> print(sys.argv[1]) IndexError: list index out of range,但如果你添加一个命令行参数,你会得到正确的输出:$ python demo.py foo foo
标签: python firebase google-cloud-firestore