我正在尝试运行这个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'])