LoginSignup
17
14

More than 3 years have passed since last update.

AWS S3のCSVファイルをシンプルに読み込むPythonコード

Posted at

概要

  • AWSのS3バケットに保存されたCSVファイルをパッと読み込んで使うコードです
  • 難しいことはしません
  • 自分用スニペットです
  • 一旦ローカルファイルに保存しないので、巨大なファイルはメモリ注意ですね
    • 巨大ファイルの場合は素直にローカルにダウンロードするのが良いと思われます
    • 巨大な場合は全列必要でない可能性も考慮するとS3 Selectも検討範囲になるかもしれません

コード

csv_from_s3.py
import io
import csv
import boto3


def get_s3file(bucket_name, key):
    s3 = boto3.resource('s3')
    s3obj = s3.Object(bucket_name, key).get()

    return io.TextIOWrapper(io.BytesIO(s3obj['Body'].read()))


for rec in csv.DictReader(get_s3file('my-bucket-name', 'test.csv')):
    print(rec)

確認

  • awscli使います

テスト用CSV作成

$ cat << EOF > test.csv
id,name,price
1,apple,100
2,orange,200
3,grape,300
EOF

S3バケット作成とアップロード

$ aws s3 mb s3://my-bucket-name
$ aws s3 cp test.csv s3://my-bucket-name/

コード実行

  • サンプルとしてDictReaderを使っているので、dict型になっています
$ python csv_from_s3.py
{'id': '1', 'name': 'apple', 'price': '100'}
{'id': '2', 'name': 'orange', 'price': '200'}
{'id': '3', 'name': 'grape', 'price': '300'}
17
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
14