脚本中的zgrep S3存储桶

时间:2019-04-11 15:00:51

标签: python-3.x amazon-s3 aws-cli

如果我想从终端grep文件,则可以这样使用AWS CLI:

aws s3 cp s3://path/to/file/filename.tsv.gz - | zgrep 12345

我想从脚本中递归执行此操作。到目前为止,我正在这样做

import boto3

s3_client = boto3.client('s3')
obj = s3_client.get_object(Bucket=bucket, Key=prefix + file_name)
body = obj['Body'] 
with gzip.open(body, 'rt') as gf:
    for ln in gf:
        if string in ln:
            print(string)

这可以正常工作,但是实际上并不是很快。所以我想改用zgrep。

我尝试过

import subprocess

cp = 'aws s3 cp s3://' + bucket + '/' + prefix + file_name + ' - | zgrep ' + string

result = subprocess.run(cp, check=True, shell=True, stdout=subprocess.PIPE)
print(result)

但是将subprocess.CalledProcessError作为命令returned non-zero exit status 1

0 个答案:

没有答案