Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 4, 2013 13:02:59

mark24
От:
Зарегистрирован: 2011-10-22
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск bash из скрипта Python 2.7.3.

Всем привет! Есть такая проблема. Мне необходимо запустить из скрипта на Python, сценарий bash. Имею вот такой код питон-скрипта:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
def main():
	p = []
	p = os.popen("./test.sh 1")
	for line in p.readlines():
		print line
	return 0
if __name__ == '__main__':
	main()

И такой вот простой bash, просто для примера… выводит последовательно числа в цикле.
#!/bin/bash
par=$1
for i in `seq $1 5`;
do
  echo $i 
done

Проблема в том, что мне надо получать вывод скрипта bash сразу. Т.е. не ждать когда он отработает. По мере поступления вывода, надо делать определенные действия. Запуск bash скрипта стройкой кода:
p = os.popen("./test.sh 1")
Происходит превосходно! Но выполнение скрипта Python, останавливается до того так не отработает bash(((( Как это исправить?

p.s. Думаю я правильно поставил задачу и все меня поняли)))



Отредактировано mark24 (Июнь 4, 2013 13:09:18)

Офлайн

#2 Июнь 4, 2013 16:55:30

mark24
От:
Зарегистрирован: 2011-10-22
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск bash из скрипта Python 2.7.3.

Нужно юзать subprocess.Popen. Переделал под него, вот так:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import subprocess
def main():
	p = subprocess.Popen("./test.sh 1", shell=True, stdout=subprocess.PIPE)
    out = p.stdout.read() 
    print out
    
    result = out.split()
    print result
	return 0
	
if __name__ == '__main__':
	main()

Выдает ошибку - не могу сообразить что это.
  File "DontStop.py", line 9
    out = p.stdout.read() 
                         ^
IndentationError: unindent does not match any outer indentation level
------------------
(program exited with code: 1)
Press return to continue



Отредактировано mark24 (Июнь 4, 2013 17:56:53)

Офлайн

#3 Июнь 4, 2013 18:41:29

evgen34
Зарегистрирован: 2013-03-26
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск bash из скрипта Python 2.7.3.

IndentationError - отступы поправь, перед p = subprocess.Popen("./tes… лишний

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version