Форум сайта python.su
0
Здравствуйте.
Скажите пожалуйста, как добавить к subprocess еще один запрос?
Сижу на linux, в запускаю через питон программу “geth”, она консольная и работает в терминале.
После ее запуска, мне необходимо получить от нее параметры вот такой командой “web3.fromWei(eth.getBalance(eth.coinbase), ”ether“);”.
Мне предлагается ввести эту команду после указателя “>” руками. Как водить ее автоматически средствами питона? т.е прописать ее в коде.
Прочитал про subprocess communicate, но так и не понял как его использовать.
Спасибо.
#!/usr/bin/env python3 terminal = 'geth --genesis /home/georg/genesis/genesis.json --datadir /home/georg/node1 --networkid 243 --nodiscover --maxpeers 10 --port "30303" console' import subprocess PIPE = subprocess.PIPE p = subprocess.Popen(terminal, shell = True) p.wait()
Прикреплённый файлы:
a1kFVWOfKZ0.jpg (117,0 KБ)
Офлайн
0
Привет.
Как я понял, вам надо реализовать конвейер команд на питоне с использованием communicate.
Проверьте в терминале:
# geth –genesis /home/georg/genesis/genesis.json –datadir /home/georg/node1 –networkid 243 –nodiscover –maxpeers 10 –port “30303” | web3.fromWei(eth.getBalance(eth.coinbase), “ether”);
Реализация на python 2.7
#!/usr/bin/env python
import subprocess
command1='geth --genesis /home/georg/genesis/genesis.json --datadir /home/georg/node1 --networkid 243 --nodiscover --maxpeers 10 --port "30303" console '
command2='web3.fromWei(eth.getBalance(eth.coinbase), "ether"); '
p1=subprocess.Popen(command1, shell=True, stdout=subprocess.PIPE)
p2=subprocess.Popen(command2, shell=True, stdin=subprocess.PIPE)
p2.communicate(p1.stdout.read())
Отредактировано gmorgunov (Фев. 2, 2016 11:58:20)
Офлайн