如何使用Python运行Google gsutil

alp*_*ric 4 python gsutil google-cloud-platform gcloud

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

这是示例:

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

在此处输入图片说明

但是,如果使用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)
Run Code Online (Sandbox Code Playgroud)

.....

ImportError: No module named site
Run Code Online (Sandbox Code Playgroud)

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

p = subprocess.Popen(cmd, shell=False)
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以gsutil在Windows上使用Python 运行?

Gal*_*one 7

请注意,与Google Cloud Storage进行交互的正确且正式的方式是利用适用于Python的Google Cloud Client库,而不是gsutil通过运行命令subprocess.Popen。如果您不只是设置一些测试,我建议您从头开始遵循这种方式,如果没有任何技术约束使这种方式不可行。

您可以在以下链接中查看相关的概述文档。从文档中摘录的一个小示例如下:

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!')
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到另一个示例将google-cloud-python与数据存储区和Cloud Storage一起使用以管理费用。

  • 另外,Python API 与命令行相比非常慢 (5认同)
  • 据我所知,Python API 不允许使用“-m”选项来实现并行性。因此,使用“subprocess”和“gsutil”命令是有原因的。 (4认同)
  • 我强烈建议使用 gsutil 而不是本机 python 库,除了下载一两个小文件之外。gsutil 的性能提高了 100 倍,因此问题的原始方向很好(从 python 调用它) (2认同)