Amazon web services 将S3存储桶中的所有txt文件合并为一个大文件
问题:我正在尝试将大量小型文本文件合并到S3存储桶中的一个大型文件中。使用python: 下面是我在本地测试的代码。它工作得很好。(从另一个职位获得): 现在,由于我的文件位于S3存储桶中,因此我在引用S3存储桶时遇到问题。我想为S3中的所有文件运行这段代码(使用通配符*),但我很难将两者连接起来 下面是我创建的s3对象:Amazon web services 将S3存储桶中的所有txt文件合并为一个大文件,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,问题:我正在尝试将大量小型文本文件合并到S3存储桶中的一个大型文件中。使用python: 下面是我在本地测试的代码。它工作得很好。(从另一个职位获得): 现在,由于我的文件位于S3存储桶中,因此我在引用S3存储桶时遇到问题。我想为S3中的所有文件运行这段代码(使用通配符*),但我很难将两者连接起来 下面是我创建的s3对象: object = client.get_object( Bucket= 'my_bucket_name', Key='bucket_path/prefix_o
object = client.get_object(
Bucket= 'my_bucket_name',
Key='bucket_path/prefix_of_file_name*'
)
问题:如何在上面的组合代码中引用S3 bucket/路径?获取文件列表 您可以获得bucket中的文件列表,如下所示:
导入boto3
s3\u client=boto3.client('s3'))
response=s3\u client.list\u objects\u v2(Bucket='my-Bucket',前缀='folder1/')
对于响应中的对象['Contents']:
#在这里做事
打印(对象['Key'])
读写亚马逊S3
通常,您需要将每个文件从Amazon S3下载到本地磁盘(使用下载文件()
,然后读取内容)。但是,您可能需要使用,这是一个库,允许使用与普通Pythonopen()
命令类似的语法在S3上打开文件
下面是一个程序,它使用智能打开
从S3中读取文件,并将它们合并到S3中的输出文件中:
导入boto3
从智能打开导入打开
BUCKET='我的BUCKET'
前缀='folder1/'#可选
s3\u client=boto3.client('s3'))
#使用智能打开打开输出文件
将open(f's3://{BUCKET}/out.txt、'w')作为out\u文件:
response=s3\u client.list\u objects\u v2(Bucket=Bucket,Prefix=Prefix)
对于响应中的对象['Contents']:
打印(f“复制{object['Key']}”)
#使用智能打开打开输入文件
在_文件中打开(f“s3://{BUCKET}/{object['Key']},'r'):
#从输入文件读取内容
对于\u文件中的行:
#将内容写入输出文件
输出文件。写入(行)
谢谢您的回答。这是有道理的。我试着运行这段代码,它似乎工作了一段时间(文件被打开等),然后它显示了一个错误。下面是实际错误。我猜在一些文件中有一些内容它无法打开。。?文件“C:\Users\user\AppData\Local\Programs\Python\Python39\lib\encodings\cp1252.py”,第23行,在解码返回编解码器中。charmap_解码(输入,自.错误,解码_表)[0]UnicodeDecodeError:“charmap”编解码器无法解码位置931中的字节0x8f:字符映射到我能够通过添加“encoding=”utf8“解决此问题”'在打开功能中。
object = client.get_object(
Bucket= 'my_bucket_name',
Key='bucket_path/prefix_of_file_name*'
)