Скажите интерпретатору 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)
Это может быть резервный механизм, если флаг не указан в командной строке.