我目前有很多独立功能,我正在尝试使用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
或者有一种方法可以使我的原始功能与子解析器的默认设置兼容。
谢谢。