Я сделал несколько скриптов, которые используют Fabric, он выполняет некоторую работу на нескольких серверах с помощью ssh. Но мои скрипты как классический питон скриптFabric fabfil исполнение модели ArgumentParser
Вот форма (как они выглядят): my_script.py
с некоторой функцией и основной:
from fabric.api import *
from a_custom_class import *
def function1():
#do stuff
def function2():
#do stuff
def main():
parser = ArgumentParser()
parser.add_argument('-n', '--nolaunch', help='start the parsing', action='store_false')
...
execute(function1)
execute(function2)
if __name__ == "__main__":
main()
Так, чтобы использовать мой сценарий, я просто делаю python my_script.py <my_options_for_ArgumentParser>
Это отлично работает. Но я не могу назвать это fab -f my_scrip.py main
.
Неправильно ли писать сценарий, как «обычный» сценарий? Или есть способ назвать это fab
без повторного использования?
При попытке fab -f my_script.py main
выхода это помощь от моего сценария (так что я чувствую, что я близок к чему-то):
usage fab [-h] [-n] [-g] [-m CARTO]
это мои варианты от scipt. Но это не отображается так же, если я пытаюсь вызвать его «обычным способом» python my_script.py -h
:
-h, --help show this help message and exit
-n, --nolaunch start the parsing
-g, --html generate the html
-m CARTO, --carto CARTO Do the carto stuff
Вызов реальный основной просто список функций из моего сценария fab -f my_script.py __main__
и я могу вызвать любую функцию с: fab -f my_script.py my_function
Но Я не могу понять, как задать значение параметра для ArgumentParser. Я пробовал такие вещи, как: fab -f my_script.py main:<myoptions>
, но безуспешно.
Это трудно сказать. Ваш код не воспроизводится. Я могу только догадываться, что ткань «съедает» аргументы из командной строки, прежде чем вы получите какой-либо шанс разобрать ее ... – ziky
Извините, я не смог поместить настоящий код, это несколько тысяч строк. Да, я думаю, что это так, Ткань пытается прочитать аргумент, как будто это было для него. Я просто придерживаюсь своего классического вызова 'python my_script.py
Было бы хорошо. Я попытался посмотреть исходный код ткани, и он использует '' OptionParser'' из пакета '' optparse''.Я даже пытался проверить, удаляет ли '' OptionParser'' аргументы, однако после неудачной попытки мне стало скучно и не удалось. Но дайте мне знать, если вы сделали лучше, спасибо. :) – ziky