【问题标题】:How to run Google gsutil using Python如何使用 Python 运行 Google gsutil
【发布时间】:2018-09-26 17:20:51
【问题描述】:

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

示例如下:

"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)

.....

ImportError: No module named site

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

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

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

【问题讨论】:

  • 如果你还想使用命令行,那么你必须指定文件的全名,即gsutil.cmd

标签: python google-cloud-platform gcloud gsutil


【解决方案1】:

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

您可以在以下链接中查看相关的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!')

您可以找到更多示例 here 使用 google-cloud-python 与 Datastore 和 Cloud Storage 来管理费用。

【讨论】:

  • 据我所知,python API 不允许使用-m 并行选项。所以使用subprocessgsutil 命令是有原因的。
  • @UricSou:您可以跨线程共享客户端实例,因为存储客户端使用requests 库。只需在multiprocessing.Pool 之后创建客户端实例。
  • 另外,python API 与命令行的关联非常慢
猜你喜欢
  • 1970-01-01
  • 2018-01-13
  • 2020-08-30
  • 2015-02-10
  • 2020-05-07
  • 1970-01-01
  • 2021-06-11
  • 2022-06-21
  • 2015-05-25
相关资源
最近更新 更多