image_url = sys.argv [1] IndexError:列表索引超出范围 [英] image_url = sys.argv[1] IndexError: list index out of range
问题描述
我对以下Python代码部分有疑问:
I am having an issue with the following section of Python code:
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
推荐答案
sys.argv
列表是通过传递给脚本的命令行参数填充的,因此,如果未提供任何参数,则可能会收到类似
sys.argv
list is populated from the command line arguments passed to the script, so in case none are provided it's expected to get an error like
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])
demo.py
中的
并使用python demo.py
运行它.您将获得输出
in demo.py
and run it using python demo.py
. You'll get the output
$ 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
将参数传递给它,则会得到所需的输出:
but if you pass an argument to it using python demo.py foo
you'll get the desired output:
$ python demo.py foo
foo
特别是对于您的示例,看起来像在调用demo4.py
脚本时未传递图像url命令行参数.您可以使用python demo4.py <image_url_goes_here>
传递它.
Specifically for your example, looks like when calling demo4.py
script you're not passing image url command line argument. You can pass it using python demo4.py <image_url_goes_here>
.
这篇关于image_url = sys.argv [1] IndexError:列表索引超出范围的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!