目标 - 阅读在谷歌 Cloud 存储桶上传的csv文件 .
环境 - 在主节点上使用SSH实例运行Jupyter笔记本 . 在Jupyter笔记本上使用python试图访问上传到谷歌 Cloud 存储桶的简单csv文件 .
方法 -
第一种方法 - 编写一个简单的python程序
写下以下程序
import csv
f = open('gs://python_test_hm/train.csv' , 'rb' )
csv_f = csv.reader(f)
for row in csv_f
print row
结果 - 错误消息“没有这样的文件或目录”
第二种方法 - 使用gcloud Package尝试访问train.csv文件 . 示例代码如下所示 . 下面的代码不是实际的代码 . 我的代码版本中的Google Cloud 存储上的文件被称为“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内容,如下所示 . 我有兴趣查看train 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>']
有人可以对这里可能出现的问题有所了解吗?我如何实现目标?非常感谢您的帮助 .
非常感谢你的帮助!
2 回答
我假设您正在使用在Google Cloud 平台(GCP)中的计算机上运行的Jupyter笔记本电脑?如果是这种情况,您将已在该计算机上运行Google Cloud SDK(默认情况下) .
通过此设置,您可以使用2个简单的选项来使用Google Cloud 端存储(GCS):
写给GCS:
gsutil cp train.csv gs://python_test_hm/train.csv
从GCS阅读:
gsutil cp gs://python_test_hm/train.csv train.csv
写给GCS:
从GCS阅读:
您的应用提取的登录页面isn 't actually the object - it'是一个身份验证重定向页面,如果与之交互,则会继续为该对象提供服务 . 您应该查看 Cloud 存储上的documentation以了解auth如何工作,并查找用于访问存储桶/对象的库或方法的auth详细信息 .