如何以只读模式从GCS加载CSV文件

时间:2019-11-26 13:59:22

标签: python google-cloud-platform

file_name = "r1.csv"
client = storage.Client()
bucket = client.get_bucket('upload-testing')
blob = bucket.get_blob(file_name)
blob.download_to_filename("csv_file")

要以只读模式打开r1.csv文件。 遇到此错误

with open(filename, 'wb') as file_obj:
Error: [Errno 30] Read-only file system: 'csv_file'

因此,函数download_to_filename在wb模式下打开文件有什么方法可以让我以只读模式打开r1.csv

2 个答案:

答案 0 :(得分:1)

如上一个答案中所述,您需要使用r模式,但是由于这是默认模式,因此无需指定。

为了能够读取文件本身,您需要先下载文件,然后读取其内容并根据需要处理数据。以下示例将GCS文件下载到一个临时文件夹,打开该下载的对象并获取其所有数据:

storage_client = storage.Client()
bucket = storage_client.get_bucket("<BUCKET_NAME>")
blob = bucket.blob("<CSV_NAME>")
blob.download_to_filename("/tmp/test.csv")
with open("/tmp/test.csv") as file:
    data = file.read()
    <TREAT_DATA_AS_YOU_WISH>

该示例被认为可以在GAE内部运行。

答案 1 :(得分:0)

如果要打开只读文件,则应使用'r'模式,'wb'的意思是write binary

with open(filename, 'r') as file_obj: