如何在AWS的lambda函数中读取tar文件的内容

2024-04-25 21:35:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在不提取tar文件的情况下读取.tar文件中的内容。我尝试了我的本地机器,并成功地读取了文件的内容。只是,我传递了.tar文件的路径。为此,我使用了一个名为tarfile的库。在这个图书馆的帮助下,我做到了。现在,我正试图在AWS中使用lambda函数执行相同的操作,但我无法做到这一点。你能建议其他的方法吗

import tarfile
file_path = r'C:/Users/xyz/Downloads/abc.tar'
tar = tarfile.open(file_path, "r:gz")
for member in tar.getnames():
    name = str(member) 
    if name.endswith(".txt"):
        f = tar.extractfile(name)
        if f:
            for i in f:
                print(str(i))

美国焊接学会代码

s3 = boto3.client('s3')
Bucket='abc-logs'
if event:
        for i in event:
            file_obj = event["Records"][0]
            Key = str(file_obj['s3']['object']['key'])
            if file_name_split == 'PERFORMANCE':
                print("Key",Key)
                tar_file_obj = s3.get_object(Bucket='abc-logs',Key=Key)
                # print(tar_file_obj)
                # tar = tarfile.open(tar_file_obj["Body"],"r:gz")
                # print(tar)
                file_content = tar_file_obj["Body"].iter_lines()
                print(file_content)

Tags: 文件keynameineventobjforif
1条回答
网友
1楼 · 发布于 2024-04-25 21:35:59

您可以使用以下方法读取tar文件内容:

tar_file_obj = s3.get_object(Bucket='abc-logs',Key=Key)
tar_content = tar_file_obj ['Body'].read()

with tarfile.open(fileobj = BytesIO(tar_content)) as tar:
   for tar_resource in tar:
      if (tar_resource.isfile()):
         inner_file_bytes = tar.extractfile(tar_resource).read()

相关问题 更多 >

    热门问题