如何使用Python运行Google gsutil

时间:2018-04-16 21:10:05

标签: python google-cloud-platform gcloud gsutil

安装和配置Google Cloud SDK gsutil命令后,只需使用Windows cmd键入其名称和参数(-s)即可运行。

以下是示例:

"C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin\gcloud" version

enter image description here

但是如果使用Python子进程运行,则相同的命令会失败。 将子进程的shell参数设置为True,ImportError发生:

import subprocess

cmd = '"C:/Program Files (x86)/Google/Cloud SDK/google-cloud-sdk/bin/gsutil" version'

p = subprocess.Popen(cmd, shell=True)

.....

ImportError: No module named site

将子进程的shell参数设置为False,然后发生WindowsError: [Error 2] The system cannot find the file specified

p = subprocess.Popen(cmd, shell=False)

有没有办法在Windows上使用Python运行gsutil

2 个答案:

答案 0 :(得分:4)

请注意,与Google云端存储互动的正确和官方方式是使用适用于Python的Google Cloud Client Library 而不是通过gsutil运行subprocess.Popen命令。 如果你没有设置一些测试我建议你从一开始就按照这种方式进行操作,如果没有任何技术限制使得这种做法不切实际。

您可以在以下链接中查看相对OverviewDocumentation。 从文档中获取的一个小例子如下:

from google.cloud import storage

client = storage.Client()
bucket = client.get_bucket('<your-bucket-name>')
blob = bucket.blob('my-test-file.txt')
blob.upload_from_string('this is test content!')

您可以使用google-cloud-python与数据存储区和云存储系统找到更多示例here来管理费用。

答案 1 :(得分:-1)

您需要使用args列表。

p = subprocess.Popen(['C:/Program Files (x86)/Google/Cloud SDK/google-cloud-sdk/bin/gsutil', 'version'] , shell=True)