Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 将S3存储桶中的所有txt文件合并为一个大文件_Amazon Web Services_Amazon S3 - Fatal编程技术网

Amazon web services 将S3存储桶中的所有txt文件合并为一个大文件

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

问题:我正在尝试将大量小型文本文件合并到S3存储桶中的一个大型文件中。使用python:

下面是我在本地测试的代码。它工作得很好。(从另一个职位获得):

现在,由于我的文件位于S3存储桶中,因此我在引用S3存储桶时遇到问题。我想为S3中的所有文件运行这段代码(使用通配符*),但我很难将两者连接起来

下面是我创建的s3对象:

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下载到本地磁盘(使用
下载文件()
,然后读取内容)。但是,您可能需要使用,这是一个库,允许使用与普通Python
open()
命令类似的语法在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*'
    )