[英]How to run aws cli comands in python using subprocess module
我正在嘗試從 python 運行一個非常基本的 AWS CLI 命令,而不是使用 boto3
所以我從堆棧溢出中找到了一個答案我試過了,但它沒有做得更好,我不想使用 boto3,下面是我嘗試過的代碼
import subprocess
cmd='aws s3 ls'
push=subprocess.Popen(cmd, shell=True, stdout = subprocess.PIPE)
print push.returncode
如果我將這些命令運行到 bash 腳本中,它就可以正常工作。 但是我有一個限制,那就是只能使用 python 腳本來完成。
至於文檔subprocess.Popen狀態, .returncode
店子進程返回代碼。 運行你的代碼后,我看到了這個輸出:
ania@blabla:~$ python3 test.py
None
ania@blabla:~$
[Errno 32] Broken pipe
再次檢查上述文檔:
None
值表示進程尚未終止。
因此,讓我們修改您的代碼以等待子進程結束(我使用的是 Python 3):
import subprocess
cmd='aws s3 ls'
push=subprocess.Popen(cmd, shell=True, stdout = subprocess.PIPE)
push.wait() # the new line
print(push.returncode)
現在,在輸出中我得到退出狀態 0:
ania@blabla:~$ python3 test.py
0
這是關於同一個問題咨詢subprocess
模塊,但什么困擾我的是,為什么你不希望使用boto3
這是專門為從Python的發送API調用AWS寫入模塊。 我鼓勵你使用subprocess
來發送這些請求,並切換到boto3
,如果可能的話。
好吧,您可以嘗試以下命令。
import subprocess
push=subprocess.call(['aws', 's3', 'ls', '--recursive', '--human-readable', '--summarize'])
或者
import subprocess
push=subprocess.run(['aws', 's3', 'ls', '--recursive', '--human-readable', '--summarize'])
願對你有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.