运行 来自本地 python 脚本的 AWS cli 命令?

Running an AWS cli command from a local python script?

我正在尝试 运行 这个 aws s3 ls 命令:

aws s3 ls s3://path/to/my/bucket/12434 --recursive --human-readable --summarize

用这个 python:

command = 'aws s3 ls s3://path/to/my/bucket/12434 --recursive --human-readable --summarize'
s3_folder_data  = subprocess.check_output(command, stderr=subprocess.STDOUT, shell=True)
print s3_folder_data

但失败并出现此错误:

subprocess.CalledProcessError: Command 'aws s3 ls s3://path/to/my/bucket/12434 --recursive --human-readable --summarize' returned non-zero exit status 1

命令本身在我 运行 时起作用。 python 脚本由同一台计算机上的同一用户调用。给出了什么?

按照其他人的建议,使用 Boto3 S3 库来获取您想要的内容。但如果你坚持subprocess,试试:

subprocess.check_output(['aws', 's3', 'ls', 's3://path/to/my/bucket/12434', '--recursive', '--human-readable', '--summarize'])

subprocess.call(['aws', 's3', 'ls', 's3://path/to/my/bucket/12434', '--recursive', '--human-readable', '--summarize'])

并以此为基础。

Python 3.5 中的新功能,您也可以使用 subprocess.run()

subprocess.run(['aws', 's3', 'ls', 's3://path/to/my/bucket/12434', '--recursive', '--human-readable', '--summarize'])