Уведомления

Группа в Telegram: @pythonsu

#1 Май 4, 2018 02:01:36

ss100s
Зарегистрирован: 2016-02-29
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос по subprocess

 import subprocess
p = subprocess.Popen('/usr/bin/sudo /usr/bin/apt update', shell = True, stdout = subprocess.PIPE)
output = p.communicate()[0]
myfile = open("/tmp/output", "w")
myfile.write(output)
myfile.close()
print 'next'
Нужно выполнить “print ‘next’” не дожидаясь завершения ‘/usr/bin/apt upgrade’.
При этом ‘/usr/bin/apt upgrade’ должен корректно отработать и вывод записать в “/tmp/output”.

Офлайн

#2 Май 4, 2018 09:29:56

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

вопрос по subprocess

ss100s
Нужно выполнить “print ‘next’” не дожидаясь завершения
Вы забыли изложить в чем проблема.
 import subprocess as sp
print("next")
sp.check_call("sudo apt update > /tmp/out.txt",shell=1)



Отредактировано doza_and (Май 4, 2018 09:30:37)

Офлайн

#3 Май 4, 2018 23:12:07

ss100s
Зарегистрирован: 2016-02-29
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос по subprocess

doza_and
Вы забыли изложить в чем проблема.
Так и есть
После вызова приложения через “subprocess.Popen” необходимо продолжить выполнение скрипта.
Само приложение отрабатывает длительное время и вызывается многократно.

Офлайн

#4 Май 5, 2018 11:15:49

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

вопрос по subprocess

doza_and
p.communicate()
это блокирующая операция, вам надо использовать Popen, а лог писать лучше как doza_and описал



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Май 5, 2018 20:36:45

ss100s
Зарегистрирован: 2016-02-29
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос по subprocess

JOHN_16
это блокирующая операция, вам надо использовать Popen, а лог писать лучше как doza_and описал
Спс. В полной версии скрипта я не сохраняю вывод Popen в лог, а передаю в переменную чтобы распарсить.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version