Скажите интерпретатору python использовать переключатель командной строки интерпретатора в самом скрипте

Можно ли сказать, что интерпретатор Python запускает мой скрипт, используя определенные параметры командной строки.

Например,

Если у меня включены doctests, я хотел бы добавить

if __name__ == '__main__':
    import doctest
    doctest.testmod()

создать автономный тестовый бегун.

Тем не менее, это требует, чтобы я добавил -v переключиться на запуск скрипта:

python myscript -v

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

Возможно ли это, и если да, то как?

ОБНОВИТЬ

Ниже кто-то указал, что в случае с doctest вместо флага интерпретатора используется флаг сценария. Но я действительно хочу знать об обоих случаях.

Также хотя testmod(verbose=True) может решить этот конкретный случай, я все еще заинтересован в исходном вопросе.

3 ответа

Решение

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

#! /usr/local/bin/python3 -m doctest -v

а потом

chmod +x myscript.py

Не знаю, как это сделать с Windows (возможно, дождаться подсистемы Linux для Win10), но, к счастью, я в основном работаю на macOS.

Это работает и для других ключей командной строки.

Проходить verbose=True в doctest.testmod:

if __name__ == '__main__':
    import doctest
    doctest.testmod(verbose=True)

Неразбериха с флагами командной строки - неправильный путь.

Вы можете рассмотреть возможность использования переменных среды. например,

# from the command line
export VERBOSE_MODE=True

# in the Python code
import os
verbose_mode = os.environ.get('VERBOSE_MODE', False)

Это может быть резервный механизм, если флаг не указан в командной строке.

Другие вопросы по тегам