相关疑难解决方法(0)

使用boto从S3中逐行读取文件?

我在S3中有一个csv文件,我正在尝试读取标题行以获取大小(这些文件由我们的用户创建,因此它们几乎可以是任何大小).有没有办法用boto做到这一点?我想也许我可以使用python BufferedReader,但我无法弄清楚如何从S3键打开流.任何建议都会很棒.谢谢!

python amazon-s3 boto

18
推荐指数
8
解决办法
4万
查看次数

如何使用botocore.response.StreamingBody作为stdin PIPE

我想将来自AWS S3的大型视频文件传输到Popen's stdin,这是从Python的角度来看的'文件类对象'.此代码作为AWS Lambda函数运行,因此这些文件不适合内存或本地文件系统.此外,我不想在任何地方复制这些巨大的文件,我只想流式传输输入,动态处理和流输出.我已经有处理和流输出位工作了.问题是如何获得输入流作为Popen pipe.

更新:我整理了一个基于注释调用StreamingBody.read(amt = chunk_size)的短程序.该程序读取一些输入文件(一个mp4视频)并被卡住,可能是因为数据的消费者(ffmpeg)实际上没有运行,或者它的STDIN缓冲区填充并且整个混乱停止了?

我可以访问S3存储桶中的文件:

import boto3
s3 = boto3.resource('s3')
response = s3.Object(bucket_name=bucket, key=key).get()
body = response['Body']  
Run Code Online (Sandbox Code Playgroud)

bodybotocore.response.StreamingBody这样的:

{ u'Body': <botocore.response.StreamingBody object at 0x00000000042EDAC8>, u'AcceptRanges': 'bytes', u'ContentType': 'video/mp4', 'ResponseMetadata': { 'HTTPStatusCode': 200, 'HostId': 'aAUs3IdkXP6vPGwauv6/USEBUWfxxVeueNnQVAm4odTkPABKUx1EbZO/iLcrBWb+ZiyqmQln4XU=', 'RequestId': '6B306488F6DFEEE9' }, u'LastModified': datetime.datetime(2015, 3, 1, 1, 32, 58, tzinfo=tzutc()), u'ContentLength': 393476644, u'ETag': '"71079d637e9f14a152170efdf73df679"', u'Metadata': {'cb-modifiedtime': 'Sun, 01 Mar 2015 01:27:52 GMT'}}

我打算用body这样的东西:

from subprocess import Popen, PIPE
Popen(cmd, …
Run Code Online (Sandbox Code Playgroud)

python stdin python-2.7 boto3

8
推荐指数
1
解决办法
1万
查看次数

Boto3 逐行从 S3 键读取文件内容

使用 boto3,您可以从 S3 中的某个位置读取文件内容,根据存储桶名称和密钥(这假设是初步的import boto3

s3 = boto3.resource('s3')

content = s3.Object(BUCKET_NAME, S3_KEY).get()['Body'].read()
Run Code Online (Sandbox Code Playgroud)

这将返回一个字符串类型。我需要获取的特定文件恰好是一组类似字典的对象,每行一个。所以它不是 JSON 格式。我不想将其作为字符串读取,而是将其作为文件对象流式传输并逐行读取;除了首先在本地下载文件之外,找不到其他方法来执行此操作

s3 = boto3.resource('s3')

bucket = s3.Bucket(BUCKET_NAME)

filename = 'my-file'
bucket.download_file(S3_KEY, filename)

f = open('my-file')
Run Code Online (Sandbox Code Playgroud)

我要问的是是否可以对文件进行这种类型的控制,而不必先在本地下载它?

python amazon-s3 amazon-web-services boto3

5
推荐指数
3
解决办法
1万
查看次数