roggerg
Май 31, 2017 02:32:54
Всем привет.
Есть внешнее приложение, задача написать такой скрипт. Запустить приложение, передать в него
пароль и логин и дальше запустить его.
С первой частью а имменно запуск мне понятен (Использутся модуль os и функция os.system('path')) а вот
как дальше реализовать я не знаю.
JOHN_16
Май 31, 2017 15:45:31
дальше вам никак, потому что вы не имеете никакого контроля за дочерним процессом
используйте subprocess
И да этот вопрос оч легко гуглится
roggerg
Июнь 1, 2017 01:48:28
Я пытался гуглить, но не смог найти ответа на мой вопрос. Буду благодарен за ссылку с описанием.
Т.е. изачально было не правильно выбран модуль os?
PEHDOM
Июнь 1, 2017 09:45:24
както так, на примере cat :
import subprocess
p = subprocess.Popen(['cat'], stdout=subprocess.PIPE, stdin=subprocess.PIPE)
for i in range(3):
p.stdin.write('msg {}\n'.format(i))
info = p.stdout.readline()
print(info)
или так:
import subprocess
proc = subprocess.Popen(['sftp','user@server', 'stop'], stdin=subprocess.PIPE)
proc.stdin.write('yourPassword\n')
proc.stdin.flush()
“ссылка с описанием”:
https://docs.python.org/3/library/subprocess.htmlна русском:
https://pythonworld.ru/moduli/modul-subprocess.htmlhttp://john16blog.blogspot.com/2010/10/python-subprocess.html
roggerg
Июнь 5, 2017 03:22:02
Спасибо
Пытался повторить первый пример и у меня появляется такая ошибка
Traceback (most recent call last):
File “<stdin>”, line 2, in <module>
TypeError: a bytes-like object is required, not ‘str’
JOHN_16
Июнь 5, 2017 12:24:45
roggerg
TypeError: a bytes-like object is required, not ‘str’
TypeError: необходим байтовый объект, а не ‘str’
намекну
>>> type('qwe')
<class 'str'>
>>> type(b'qwe')
<class 'bytes'>
>>> type(bytes('qwe', 'utf-8'))
<class 'bytes'>
>>> bytes('qwe', 'utf-8') == b'qwe'
True