gsutil以其自定义的键值格式产生stdout输出,很难解析。是否可以使gsutil生成JSON,例如对于此命令:
可以将gsutil生成的输出格式改为JSON吗?例如对于这个命令:gsutil ls -L gs://bucket-name/relative/path
gsutil以其自定义的键值格式产生stdout输出,很难解析。是否可以使gsutil生成JSON,例如对于此命令:
可以将gsutil生成的输出格式改为JSON吗?例如对于这个命令:gsutil ls -L gs://bucket-name/relative/path
gsutil
的一部分,输出格式无法修改。 gs://bucket/ :
Storage class: STANDARD
Location constraint: US
Versioning enabled: False
Logging configuration: None
Website configuration: None
CORS configuration: None
Lifecycle configuration: None
Requester Pays enabled: True
Labels: None
Default KMS key: None
Time created: Thu, 14 Jan 2016 19:25:17 GMT
Time updated: Thu, 08 Jun 2017 21:17:59 GMT
Metageneration: 1
Bucket Policy Only enabled: False
ACL:
[
{
"entity": "project-owners-867489160491",
"projectTeam": {
"projectNumber": "867489160491",
"team": "owners"
},
"role": "OWNER"
}
]
Default ACL:
[
{
"entity": "project-owners-867489160491",
"projectTeam": {
"projectNumber": "867489160491",
"team": "owners"
},
"role": "OWNER"
}
]
git clone https://github.com/fedir/json_encode.git
cd json_encode
go build
gsutil ls -L gs://bucket-name | ./json_encode
似乎将制表符替换为空格就足以使pyyaml库解析输出:
import re, subprocess, yaml
output = subprocess.check_output('gsutil ls -Lb gs://some-bucket-name'.split()).decode('utf-8')
bucket = yaml.safe_load(re.sub('\t', ' ', output))