Execute um comando shell em Python

0

Ambiente - PyCharm

Estou usando o comando abaixo para obter o arquivo JSON: -

aws rds describe-db-cluster-snapshots > snapshotdetails.json

Estou usando esse arquivo Json para extrair alguns dados. Eu quero que o comando acima seja executado a partir do meu script Python. Eu tentei abaixo, mas está falhando: -

from subprocess import call
call(["aws rds describe-db-cluster-snapshots > snapshotdetails.json"])

Estou recebendo um erro e não está funcionando. Quaisquer ponteiros?

Erro: -

Traceback (most recent call last):File "/Users/PrashastKumar/Desktop/CrossRegion/venv/lib/crossregiontrial.py", line 3, in <module>
call(["aws rds describe-db-cluster-snapshots > snapshotdetails.txt"])
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
    
por Prashast 08.05.2018 / 23:53

1 resposta

0

Uma solução python3 :

from subprocess import Popen, PIPE
cmd_output = Popen(["echo", "foo"], stdout=PIPE)
with open('bar.txt', 'w') as out_handle:
    out_handle.write(cmd_output.communicate()[0].decode('UTF-8'))
    
por 09.05.2018 / 06:15