Подтвердить что ты не робот

Лучший способ вернуть значение из python script

Я написал script в python, который принимает несколько файлов, запускает несколько тестов и подсчитывает количество total_bugs при записи новых файлов с информацией для каждого (ошибки + больше).

Чтобы взять пару файлов из текущего рабочего каталога:

myscript.py -i input_name1 имя_имя2

Когда это задание выполнено, я хотел бы, чтобы script возвращал total_bugs, но я не уверен, что это лучший способ реализовать это.

В настоящее время script печатает такие вещи, как:

[working directory]
[files being opened]
[completed work for file a + num_of_bugs_for_a]
[completed work for file b + num_of_bugs_for_b]
...
[work complete]

Немного справки (примечания/советы/примеры кода) могут быть полезны здесь.

Btw, это должно работать для окон и unix.

4b9b3361

Ответ 1

Если вы хотите, чтобы ваши значения script возвращали, просто сделайте return [1,2,3] из функции, обертывающей ваш код, но затем вам придется импортировать ваш script из другого script в даже использовать любую информацию для этой информации:

Возвращаемые значения (из оберточной функции)

(опять же, это должно быть запущено отдельным Python script и импортироваться, чтобы даже принести пользу):

import ...
def main():
    # calculate stuff
    return [1,2,3]

Коды выхода в качестве индикаторов

(Обычно это хорошо, когда вы хотите указать губернатору, что пошло не так, или просто количество ошибок/строк, подсчитанных или w/e. Обычно 0 - хороший выход, a >= 1 - плохой выход, но вы могли бы inter-prate их каким-либо образом вы хотите получить данные из него)

import sys
# calculate and stuff
sys.exit(100)

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

Stdout как ваше реле

Если нет, вам нужно будет использовать stdout для общения с внешним миром (как вы описали). Но это вообще плохая идея, если только парсер не выполняет ваш script и не может поймать то, о чем вы сообщаете.

import sys
# calculate stuff
sys.stdout.write('Bugs: 5|Other: 10\n')
sys.stdout.flush()
sys.exit(0)

Используете ли вы script в контролируемой среде планирования, тогда лучше всего выйти из кода выхода.

Файлы в качестве конвейеров

Также есть возможность просто записать информацию в файл и сохранить там результат.

# calculate
with open('finish.txt', 'wb') as fh:
    fh.write(str(5)+'\n')

И возьмите оттуда значение/результат. Вы даже можете сделать это в формате CSV, чтобы другие могли читать упрощенно.