2015-04-08 4 views
0

Я хотел бы знать, есть ли способ вызвать функции модуля из командной строки. Моя проблема в том, что у меня есть пакет файлов, называемый find_mutations. Это требует, чтобы входные файлы сортировались определенным образом, поэтому я сделал функцию для этого. Я хотел бы, чтобы пользователь имел возможность иметь возможность запускать код обычно:вызывать функции модуля python из командной строки

$ python -m find_mutations -h 

или запустить определенную функцию sort_files:

$ python -m find_mutations.sort_files -h 

что-то подобное возможно? Если да, то должна ли функция sort_files быть в собственной полосе? Нужно ли добавлять что-то к моему сценарию __init__.py? Пакет правильно устанавливается и работает нормально, я просто хотел бы добавить это.

+1

Вы принимаете что-то вроде '$ python -m find_mutations sort_files'? См. https://docs.python.org/2/library/argparse.html#sub-commands – jonrsharpe

+0

, если это удобный способ запускать 'find_mutations' и' sort_files' после того, как пакет был установлен, оба из которых используют разные входы для argparse – user3266890

+0

Установлен как? Как скрипты 'setup.py'? Под-команды могут обрабатывать разные аргументы, но может потребоваться некоторая перегруппировка. – jonrsharpe

ответ

2

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

import sys 

if __name__ == "__main__": 
    if '-s' in sys.argv: 
     sort_files() 

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

Смежные вопросы