在我的s3存储桶目录中,我有多个文件,例如.csv,.log,.txt等。但是我需要从单个目录中读取只读.log文件,并使用boto3附加它们。我尝试了下面的代码,但它正在读取所有文件数据,无法使用* .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)
这样的第一个输出以'\ 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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句