我正在学习如何在上上传文件。我找到了这样的代码:https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/storage/cloud-client -它可以执行一系列操作,如创建-桶、删除-桶、列表、上载和下载…。
但是,我无法运行代码。
我试过:
python snippets.py [-h] scene.appspot.com list错误:
错误:参数命令:无效的选择:“情景-maker.apppot.com”(从'create-bucket‘、’删除-bucket‘、’get-bucket-标签‘、'add-bucket-label’、'remove-bucket-label‘、'list’、‘list-with-前缀’、'upload‘、'download’、'delete‘、’元数据‘、'make-public’、‘签名-url’、'rename‘、'copy')中选择
我试过:
python snippets.py [-h] list scene.appspot.com
python snippets.py [-h] list gs://scene.appspot.com
python snippets.py [-h] list "gs://scene.appspot.com"
python snippets.py [-h] list bucket_name错误:
error: unrecognized arguments: scene.appspot.com
error: unrecognized arguments: gs://scene.appspot.com我试过:
python snippets.py list [-h] scene.appspot.com错误:
错误:参数命令:无效选择:“-h”(从“创建-桶”、“删除-桶”、“获取-桶-标签”、“添加-桶-标签”、“删除-桶-标签”、“列表”、“带有前缀的列表”、“上载”、“下载”、“删除”、“元数据”、“公开的”、“签名-url”、“重命名”、“复制”中选择)
我试过:
python snippets.py [-h] list错误:
Traceback (most recent call last):
File "snippets.py", line 322, in <module>
list_blobs(args.bucket_name)
File "snippets.py", line 88, in list_blobs
bucket = storage_client.get_bucket(bucket_name)
File "C:\Anaconda2\lib\site-packages\google\cloud\storage\client.py", line 172, in get_bucket
bucket = Bucket(self, name=bucket_name)
File "C:\Anaconda2\lib\site-packages\google\cloud\storage\bucket.py", line 113, in __init__
name = _validate_name(name)
File "C:\Anaconda2\lib\site-packages\google\cloud\storage\_helpers.py", line 39, in _validate_name
'Bucket names must start and end with a number or letter.')
ValueError: Bucket names must start and end with a number or letter.当我运行:gsutil ls,我得到:
gs://scene.appspot.com/
gs://staging.scene.appspot.com/如何使用python snippets.py命令?最终,我希望用户能够将文件从web浏览器上传到云存储。
发布于 2017-11-16 20:44:48
您在调用正确的命令语法时遇到了问题。
错误:参数命令:无效选择:'-h‘
实际上,命令中不应该包含[-h]。方括号只是表示可选参数的标准表示法。因此,要么在命令中使用-h (这将指示您请求命令的帮助/使用屏幕,而不是实际尝试执行命令),要么将其完全排除在外。
从您引用的页面中:
要运行此示例: $ python snippets.py用法: snippets.py -h bucket_name {创建-桶,删除-桶,获取-桶-标签,添加-桶标签,删除桶-标签,列表,列表-前缀,上传,下载,删除,元数据,公开,签名-url,重命名,复制}.
因此,该命令期望第一个参数(在snippets.py之后)是桶名,然后是要执行的特定操作。根据操作的不同,可能会出现其他参数。
您使用的[-h]被解释为参数,并抛出解析器:
[-h]被解释为桶名,scene.appspot.com被解释为操作。但该操作是无效的,因此出现了错误。[-h]被解释为桶名,“list”解释为操作(这次是有效的),但是您有另一个参数(试图指定桶名),这对于list操作来说是意外的--因此出现了错误。list被解释为桶名,[-h]解释为操作--同样是无效操作--因此出现了错误。[-h]被解释为桶名,“list”解释为操作(有效)。这一次,参数和操作的数量看起来是正确的,代码继续进一步验证桶名,因为[-h]不是有效的,因此出现了错误。因此,我会尝试(我不确定桶名的实际预期格式):
python snippets.py scene.appspot.com list
python snippets.py gs://scene.appspot.com list要将文件上载到桶中(使用上次尝试确定的正确的桶名格式,我将假设从现在开始它是scene.appspot.com ),它可能以以下内容开头:
python snippets.py scene.appspot.com upload要查看此操作的预期语法,请添加-h选项:
python snippets.py -h scene.appspot.com uploadNote:整个方法是命令驱动的,将文件从web浏览器上传到云存储完全不同。作为一个单独的问题,我会问这个问题,有很多细节,因为它可以有很多答案。
https://stackoverflow.com/questions/47333747
复制相似问题