S3の学習と使用を開始したばかりのので、ドキュメントを読んでください。実際に私はS3からダウンロードするのではなく、オブジェクトにファイルを取り込むためのものは何も見つかりませんでしたか?これが可能なのか、何かが欠けているのでしょうか?絶対システムパスにダウンロードするのではなく、S3ファイルをオブジェクトとして取得する
実際には、ファイルをダウンロードした後にIOを追加しないようにしたいと考えています。
S3の学習と使用を開始したばかりのので、ドキュメントを読んでください。実際に私はS3からダウンロードするのではなく、オブジェクトにファイルを取り込むためのものは何も見つかりませんでしたか?これが可能なのか、何かが欠けているのでしょうか?絶対システムパスにダウンロードするのではなく、S3ファイルをオブジェクトとして取得する
実際には、ファイルをダウンロードした後にIOを追加しないようにしたいと考えています。
あなたはこのように、StringIO
を使用してget_contents_as_string
を使用してS3からファイルの内容を取得することができます:
import pandas as pd
import StringIO
from boto.s3.connection import S3Connection
AWS_KEY = 'XXXXXXDDDDDD'
AWS_SECRET = 'pweqory83743rywiuedq'
aws_connection = S3Connection(AWS_KEY, AWS_SECRET)
bucket = aws_connection.get_bucket('YOUR_BUCKET')
fileName = "test.csv"
content = bucket.get_key(fileName).get_contents_as_string()
reader = pd.read_csv(StringIO.StringIO(content))
get_object()
方法を探しているかもしれない
:
http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.get_object
これにより、StreamingBody
というオブジェクトのメンバーオブジェクトBody
が返されます。これは通常のファイルとして使用でき、.read()
方法です。同等
s3_client = boto3.client('s3')
s3_response_object = s3_client.get_object(Bucket=BUCKET_NAME_STRING, Key=FILE_NAME_STRING)
object_content = s3_response_object['Body'].read()
私はこのアプローチを好む、a previous answerに:
import boto3
s3 = boto3.resource('s3')
response = s3.Object(bucket_name, key).get()
return response['Body'].read()
をしかし、別のアプローチがStringIO
にオブジェクトを読むことができるメモリにS3オブジェクトの全体の内容を取得するには、このような何かをするだろう:
import StringIO
import boto3
s3 = boto3.resource('s3')
string_io = StringIO.StringIO()
s3.Object(bucket_name, key).download_fileobj(string_io)
return string_io.getvalue()
んのGetObject(https://docs.aws.amazon.com/AmazonS3/latest/dev/RetrievingObjectUsingNetSDK.htmlを参照)を助けますか? – sgmoore