使用导入功能的args解析器子解析器设置默认值的正确方法?

时间:2019-02-15 01:01:33

标签: python-3.x command-line-interface

我目前有很多独立功能,我正在尝试使用argsparse实施到CLI程序中。

将功能合并为命令行args的标准方法似乎如下(来自我读过的博客):

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

或者有一种方法可以使我的原始功能与子解析器的默认设置兼容。

谢谢。

0 个答案:

没有答案