0

What is incorrect in the following source code?

from argparse import ArgumentParser


class MainClass(object):
    __input_files_vector = []
    __output_directory = None
    __split_percentage_at_tail_int = 100
    __is_pdf_output = False
    __is_png_output = False

    # <editor-fold desc="(__parse_args())">
    @classmethod
    def __parse_args(cls):
        # initialize argument parser
        my_parser = ArgumentParser()
        my_parser.add_argument("-i", help="multiple input files", type=list)
        my_parser.add_argument("-o", help="output directory", type=str)
        my_parser.add_argument("-n", help="percentage of data to split from tail", type=float)
        my_parser.add_argument("--pdf", help="PDF output", action='store_true')
        my_parser.add_argument("--png", help="PNG output", action='store_true')

        # parse the argument
        args = my_parser.parse_args()

        cls.__input_files_vector = args.i
        cls.__output_directory = args.o
        cls.__split_percentage_at_tail_int = args.n
        cls.__is_pdf_output = args.pdf
        cls.__is_png_output = args.png
    # </editor-fold>

    @classmethod
    def main(cls):
        cls.__parse_args()

        print(cls.__input_files_vector)
        print(cls.__output_directory)
        print(cls.__split_percentage_at_tail_int)
        print(cls.__is_pdf_output)
        print(cls.__is_png_output)


if __name__ == "__main__":
    MainClass.main()

OUTPUT:

(by_nn) C:\Users\pc\source\repos\by_nn\SCRIPTS>plot.bat

(by_nn) C:\Users\pc\source\repos\by_nn\SCRIPTS>python arg_parse_test.py -i .\..\OUTPUTS\progress-32.txt .\..\OUTPUTS\progress-64.t
xt .\..\OUTPUTS\progress-128.txt -o .\..\OUTPUTS\ -n 100 --png --pdf
usage: arg_parse_test.py [-h] [-i I] [-o O] [-n N] [--pdf] [--png]
arg_parse_test.py: error: unrecognized arguments: .\..\OUTPUTS\progress-64.txt .\..\OUTPUTS\progress-128.txt

(by_nn) C:\Users\pc\source\repos\by_nn\SCRIPTS>
2
  • On the command line, put -i before each input filename, not just the first one. Commented Aug 5, 2021 at 6:37
  • With your setup, '-i foobar' will pass the string 'foobar' to the function list, converting it to ['f', 'o', 'o', 'b', 'a', 'r']. The type parameter does not tell it to accept a list of strings. nargs is used for that. Commented Aug 5, 2021 at 7:32

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.