LINUX.ORG.RU

выполнение процесса с аргументами в цикле

 , ,


0

1

Привет. Помогите нубу дописать скрипт.

Есть определенные bash-скрипт , который я пытаюсь исполнить через оболочку. Скрипт , который я хочу выполнить выдаёт в терминал численное значение типа (0.00012 или -0.00012). Выполнение скрипта идёт (скрипт + аргумент к нему). ./script.sh -d # Я хочу написать python скрипт , который выполнит этот bash-скрипт 100 раз с аргументами от -d 1 до -d 100. Вот как я пытаюсь сделать сейчас

#!/usr/bin/python


import subprocess


n = 1

args = '/,,/,,/,,/,,/script.sh' + ' -d '
argspopen = args + str(n)
cmd = subprocess.Popen(argspopen, shell=True, stdout=subprocess.PIPE)
for line in cmd.stdout:
	if "0" in line:
		print "domain " + "    : " + line
	if "Error" in line:
		print "Domain don`t work"

Этот скрипт только для 1 «домена» под номером 1. Как зациклить это всё и получить вывод типа: domain 10 : 0.00012 и так для всех 100 доменов (если ошибка, то Domain # don`t work) Спасибо.



Последнее исправление: tampap (всего исправлений: 1)

Прочитай про seq и xargs. Первая создаёт последовательность, вторая подставляет параметры и запускает указанную команду. man не километровый, разобраться можно быстро.

Radjah ★★★★★
()

А что мешает уже сейчас завернуть этот код в цикл for? Ну может быть еще использовать subprocess.run вместо Popen, чтобы не читать короткий вывод из пайпа.

Domain don`t

Domain doesn't.

Zeta_Gundam
()

Так?

#!/usr/bin/python

import subprocess


def complit(popen, n):
    for line in popen.stdout:
        if "0" in line:
            print('domain {}: {}'.format(n, line))
        if "Error" in line:
            print('Domain {} don`t work'.format(n))


args = '/,,/,,/,,/,,/script.sh' + ' -d '
workers = {n: subprocess.Popen(args + str(n), shell=True, stdout=subprocess.PIPE) for n in range(1, 100)}

while len(workers):
    for k in [k for k in workers.keys() if workers[k].poll() is not None]:
        complit(workers[k], k)
        del workers[k]

KillTheCat ★★★★★
()

args - это кошмар и ужас. используй os.path и тд

q13
()

Регистрант выше пишет правильно, такое обрщение с путями черевато неожиданностями вплоть до неожиданностей с безопасностью.

pylin ★★★★★
()
Последнее исправление: pylin (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.