目标 - 阅读在谷歌云存储桶上传的csv文件.
环境 - 在主节点上使用SSH实例运行Jupyter笔记本.在Jupyter笔记本上使用python试图访问上传到谷歌云存储桶的简单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
Run Code Online (Sandbox Code Playgroud)
结果 - 错误消息"没有这样的文件或目录"
第二种方法 - 使用gcloud Package尝试访问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( …Run Code Online (Sandbox Code Playgroud) python google-cloud-storage google-compute-engine google-cloud-platform jupyter-notebook
背景:我正在我的 Python/AppEngine 项目中获取数据并创建一个 .tsv 文件,以便我可以使用 d3.js 创建图表。现在我正在为每个页面加载编写 CSV;我想将文件存储在 Google Cloud Storage 中一次,然后从那里读取它。
每次加载页面时,我当前如何编写文件!:
def get(self): ## this gets called when loading myfile.tsv from d3.js
datalist = MyEntity.all()
self.response.headers['Content-Type'] = 'text/csv'
writer = csv.writer(self.response.out, delimiter='\t')
writer.writerow(['field1', 'field2'])
for eachco in datalist:
writer.writerow([eachco.variable1, eachco.variable2])
Run Code Online (Sandbox Code Playgroud)
虽然效率低下,但效果很好。
使用此 Google Cloud Storage 文档,我一直在尝试实现类似的功能:
def get(self):
filename = '/bucket/myfile.tsv'
datalist = MyEntity.all()
bucket_name = os.environ.get('BUCKET_NAME', app_identity.get_default_gcs_bucket_name())
write_retry_params = gcs.RetryParams(backoff_factor=1.1)
writer = csv.writer(self.response.out, delimiter='\t')
gcs_file = gcs.open(filename, 'w', content_type='text/csv', retry_params=write_retry_params)
gcs_file.write(writer.writerow(['field1', 'field2']))
for eachco in …Run Code Online (Sandbox Code Playgroud)