Найти - Пользователи
Полная версия: Запуск bash из скрипта Python 2.7.3.
Начало » Python для новичков » Запуск bash из скрипта Python 2.7.3.
1
mark24
Всем привет! Есть такая проблема. Мне необходимо запустить из скрипта на 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
Нужно юзать 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
evgen34
IndentationError - отступы поправь, перед p = subprocess.Popen("./tes… лишний
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB