[英]Transfer files from one S3 bucket to another S3 bucket using python boto3
[英]Reading only specific format files from a S3 bucket dir using boto3 and python
在我的 s3 存储桶目录中,我有多个文件,例如 .csv、.log、.txt 等。但我需要使用 boto3 读取单个目录中的只读.log文件和 append 它们。 我尝试了下面的代码,但它正在读取所有文件数据,无法使用 *.log 进行限制,并且结果以单行形式出现,由 '\n' 分隔,如下所述。
我怎样才能只读取日志文件并合并它们,结果应该是一行一行的。
import boto3
import pandas as pd
import csv
s3 = boto3.resource('s3')
my_bucket = s3.Bucket('my_bucket')
lst = []
for object in my_bucket.objects.filter(Prefix="bulk_data/all_files/"):
print(object.key)
bdy = object.get()['Body'].read().decode('utf-8')
lst.append(bdy)
bdy = ''
print(lst)
lst output 像这样以 '\n' 作为分隔符。 '12345,6006,7290,7200,JKHBJ,S,55\n44345,6996,6290,7288,JKHkk,R,57\n.......'
我应该得到如下内容:
12345,6006,7290,7200,JKHBJ,S,55
44345,6996,6290,7288,JKHkk,R,57
...
filter
只接受前缀,而不接受后缀。 因此,您必须自己过滤它,例如使用:
import boto3
import pandas as pd
import csv
s3 = boto3.resource('s3')
my_bucket = s3.Bucket('my_bucket')
lst = []
for s3obj in my_bucket.objects.filter(Prefix="attachments/"):
# skip s3 objects not ending with csv
if (not s3obj.key.endswith('csv')): continue
print(s3obj.key)
bdy = s3obj.get()['Body'].read().decode('utf-8')
lst.append(bdy)
bdy = ''
#print(lst)
for file_str in lst:
for line in file_str.split('\n'):
print(line)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.