Определение запущенного в данный момент скрипта - PullRequest
0 голосов
/ 15 марта 2019

Скажем, у меня есть config.py, который управляет аргументами командной строки

parser = argparse.ArgumentParser()
parser.add_argument('common_argument')
args = parser.parse_args()
input_common = args. common_argument

Этот файл импортирован из многих других скриптов, которые я выполняю в моем проекте. Однако среди них есть сценарии, которые ожидают дополнительных аргументов, например, special_file.py. Как я могу добавить эти аргументы?

Альтернатива 1

В config.py я идентифицирую скрипт, который его импортирует, чтобы добавить дополнительный аргумент. Скажем, была переменная типа __importing_file__, тогда я мог бы сделать

if __importing_file__ == 'special_file':
    parser.add_argument('special_argument')

Однако я не смог выяснить, как определить текущий запущенный скрипт. Возможно ли это?

Альтернатива 2

В моем special_file.py я могу просто добавить еще один аргумент и снова проанализировать, т.е.

from config import *

parser.add_argument('special_argument')
args = parser.parse_args()
input_special = args.special_argument

Однако Python не распознает special_argument.

Есть ли решение этой проблемы?

1 Ответ

0 голосов
/ 15 марта 2019

То, что вы ищете, это __file__.Однако это НЕ , чтобы быть ошибочным с sys.argv[0].

sys.argv[0] дает точку входа модуля, то есть откуда приложение было запущено. IF это было бы django приложение sys.argv[0] дало бы manage.py, в то время как __file__ возвратило бы абсолютный путь текущего запущенного скрипта.

...