В настоящее время у меня есть несколько автономных функций, которые я пытаюсь реализовать в программе 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
или есть способ добиться того, чтобы мои исходные функции стали совместимыми с установленными по умолчанию подпарами.
Спасибо.