Правильный способ использования args parser subparser set default с импортированными функциями? - PullRequest
0 голосов
/ 15 февраля 2019

В настоящее время у меня есть несколько автономных функций, которые я пытаюсь реализовать в программе CLI с использованием argsparse.

Стандартный способ включения функций в качестве аргументов командной строки выглядит следующим образом (из блоговЯ читаю):

from consolidate_all_files import consolidate_all_files #my function
import argparse

parser=argparse.ArgumentParser(description="functions for file processing")
    subparsers = parser.add_subparsers()

    consolidate_parser = subparsers.add_parser("consolidate_files")
    consolidate_parser.add_argument('src')
    consolidate_parser.add_argument('dest')
    consolidate_parser.set_defaults(func=consolidate_all_files)

Я не совсем понимаю, как consolidate_all_files будет вызываться с set_defaults.Моя consolidate_all_files функция выглядит примерно так:

import os
import shutil

def consolidate_all_files(MAIN,DIRS)
    for root, subdirs, files in os.walk(DIRS):
        '''Basically we move all files from subfolders into one folder '''
            print('root', root)
            print('subdirs', subdirs)
            print('files', files)
            for file in files:
                    path = os.path.join(root, file)
                    try:
                        shutil.move(path, MAIN)
                    except shutil.Error as e:
                        continue

Большинство примеров, которые я видел в Интернете, похоже, что их параметры / аргументы функций вращаются вокруг аргументов парсера.Поэтому мне нужно было бы пройти через каждую функцию и изменить ее параметры на что-то вроде:

def consolidate_all_files(args)
        for root, subdirs, files in os.walk(args.src):
            '''Basically we move all files from subfolders into one folder '''
                print('root', root)
                print('subdirs', subdirs)
                print('files', files)
                for file in files:
                        path = os.path.join(root, file)
                        try:
                            shutil.move(path, dest)
                        except shutil.Error as e:
                            continue

или есть способ добиться того, чтобы мои исходные функции стали совместимыми с установленными по умолчанию подпарами.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...