4

目的 - Googleクラウドストレージバケットにアップロードされたcsvファイルを読み込みます。Googleのクラウドストレージバケットにアップロードされたcsvファイルを読み取ることができません

環境 - マスターノードでSSHインスタンスを使用してJupiterノートブックを実行します。 JupiterのノートブックでPythonを使用して、Googleのクラウドストレージバケットにアップロードされたシンプルなcsvファイルにアクセスしようとしています。

アプローチ -

第一のアプローチは - エラーメッセージ "そのようなファイルまたはディレクトリ"

第二のアプローチ - プログラム

import csv 
f = open('gs://python_test_hm/train.csv' , 'rb') 
csv_f = csv.reader(f) 
for row in csv_f 
    print row 

結果、以下の

が書いた簡単なPythonプログラムを書きます - gcloudを使用するパッケージはtrain.csvファイルにアクセスしようとしました。サンプルコードを以下に示します。以下のコードは実際のコードではありません。コードの私のバージョンでGoogleクラウドストレージ上のファイル「GS:///Filename.csv」と呼ばれていました 結果 - CSV

import csv 
from gcloud import bigquery 
from gcloud.bigquery import SchemaField 
client = bigquery.Client() 
dataset = client.dataset('dataset_name') 
dataset.create() # API request 

SCHEMA = [ 
    SchemaField('full_name', 'STRING', mode='required'), 
    SchemaField('age', 'INTEGER', mode='required'), 
] 
table = dataset.table('table_name', SCHEMA) 
table.create() 

with open('csv_file', 'rb') as readable: 
    table.upload_from_file(
     readable, source_format='CSV', skip_leading_rows=1) 
からのエラーメッセージ「そのようなファイルまたはディレクトリ」

データのロード

第三のアプローチ -

import csv 
import urllib 

url = 'https://storage.cloud.google.com/<bucket>/train.csv' 


response = urllib.urlopen(url) 
cr = csv.reader(response) 
print cr 

for row in cr: 
    print row 

結果 - 上記のコードは、エラーにはなりませんが、以下に示すように、それはGoogleのページのXMLコンテンツを表示します。列車csvファイルのデータを見ることに興味があります。

['<!DOCTYPE html>'] 
['<html lang="en">'] 
[' <head>'] 
[' <meta charset="utf-8">'] 
[' <meta content="width=300', ' initial-scale=1" name="viewport">'] 
[' <meta name="google-site-verification" content="LrdTUW9psUAMbh4Ia074- BPEVmcpBxF6Gwf0MSgQXZs">'] 
[' <title>Sign in - Google Accounts</title>'] 

ここで間違っている可能性があることを誰かが察知することができますか。どのように目標を達成できますか?あなたの助けが高く評価されます。

ご協力いただきありがとうございます。

+1

ファイルは認証が必要な場所に保存されているようです(公開サイトではありません)。そうであれば、ファイルにアクセスする前に認証を受ける必要があります。 PythonがブラウザのCookieを使用していないため、ブラウザにログインしているかどうかは関係ありません。 – celestialroad

+0

^^^これが答えです – Nick

答えて

3

Google Cloud Platform(GCP)のマシンでJupyterノートブックを使用しているとしますか? その場合、既にGoogle Cloud SDKがそのマシンで実行されています(デフォルト)。

は、Googleクラウドストレージ(GCS)で動作するように2つの簡単なオプションがあり、この設定では

  • GCSへの書き込みJupyter

    gcloud/gsutil commandsを使用してください:gsutil cp train.csv gs://python_test_hm/train.csv

    をGCSからの読書: gsutil cp gs://python_test_hm/train.csv train.csv

  • 使用google-cloud python library

    GCSへの書き込み: GCSからの読み取り

from google.cloud import storage 
client = storage.Client() 
bucket = client.get_bucket('python_test_hm') 
blob = bucket.blob('train.csv') 
blob.upload_from_string('this is test content!') 

from google.cloud import storage 
client = storage.Client() 
bucket = client.get_bucket('python_test_hm') 
blob = storage.Blob('train.csv', bucket) 
content = blob.download_as_string() 
0

あなたのアプリがフェッチページ内の符号は、実際ではありませんオブジェクト - それはn authリダイレクト・ページは、対話型であれば、オブジェクトを処理するために進む。クラウドストレージのdocumentationをチェックして認証の仕組みを確認し、バケット/オブジェクトへのアクセスに使用するライブラリや手段の認証の詳細を調べる必要があります。

関連する問題