Как я могу автоматизировать программу python, для которой требуется два ввода в командной строке linux? - PullRequest
0 голосов
/ 16 июня 2020

У меня есть программа python, которую я проанализировал в командной строке linux. Требуется два входа. Первый ввод всегда будет одним и тем же, и я хочу, чтобы второй ввод был где угодно от 1 до 1030. Есть ли способ получить python, чтобы запускать это автоматически в командной строке и каждый раз увеличивать второй ввод на +1 ? Я хотел бы сделать это, чтобы мне не приходилось вручную вводить второй ввод 1030 раз.

Моя командная строка выглядит примерно так:

$ python ex_script.py -d (first input) -r (second input)

Ответы [ 3 ]

1 голос
/ 16 июня 2020

Я бы написал короткий второй сценарий, который запускает первый сценарий с необходимыми аргументами. Не уверен, что это лучший способ, но я бы первым выбрал subprocess:

import subprocess

for i in range(1030):
    subprocess.run(['python', 'ex_script', 'arg1', str(i)])

Обратите внимание, что подпроцесс указывается со значениями в списке []. Эти значения работают в моей среде Win10, но вы можете адаптировать их для своей собственной среды.

1 голос
/ 16 июня 2020

Просто используйте для циклов в bash.

for i in {1..1030}
do
    python ex_script.py -d <the first input here> -r $i
done

l oop будет перебирать числа от 1 до 1030. Затем вы можете ввести любую командную строку инструкции внутри l oop и используйте переменную $ i, передав ее в качестве аргумента инструкции.

Вы можете поместить его в . sh файл и сделать его исполняемым, используя chmod +x.

Затем запустить его как исполняемый скрипт из терминала.

1 голос
/ 16 июня 2020

Есть несколько возможностей для получения входных данных из командной строки.

  1. с использованием import sys и sys.argv[n] даст вам n-й ввод командной строки в виде строки.
  2. используя библиотеку, такую ​​как argparse

Чтобы избежать второго аргумента, очень простым решением было бы записать счетчик в файл и заставить вашу программу читать номер в этом файле увеличьте его на единицу, замените файл. Вы также можете проверить в своей программе, что это число меньше 1030.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...