web-dev-qa-db-ja.com

Pythonを使用してGoogle gsutilを実行する方法

Google Cloud SDKをインストールして構成した後、Windowsコマンドを使用して名前と引数(-s)を入力するだけで、gsutilコマンドを実行できます。

次に例を示します。

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

Pythonを使用してWindowsでgsutilを実行する方法はありますか?

6
alphanumeric

Google Cloud Storageを操作する適切かつ公式な方法は、PythonでGoogle Cloudクライアントライブラリを使用し、subprocess.Popenを介してgsutilコマンドを実行しないことです。単にセットアップしていない場合は、この方法を実行不可能にする技術的な制約がない場合は、最初からこの方法で従うことをお勧めするいくつかのテスト。

次のリンクで、相対 概要 および ドキュメント を確認できます。ドキュメンテーションから取られた小さな例は次のようになります:

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!')

費用の管理にDatastoreとCloud Storageでgoogle-cloud-pythonを使用した別の例 here を見つけることができます。

10
GalloCedrone