pythoncommand-line-argumentsuser-inputargparsespaces

Handle spaces in argparse input


Using python and argparse, the user could input a file name with -d as the flag.

parser.add_argument("-d", "--dmp", default=None)

However, this failed when the path included spaces. E.g.

-d C:\SMTHNG\Name with spaces\MORE\file.csv

NOTE: the spaces would cause an error (flag only takes in 'C:SMTHNG\Name' as input).

error: unrecognized arguments: with spaces\MORE\file.csv

Took me longer than it should have to find the solution to this problem... (did not find a Q&A for it so I'm making my own post)


Solution

  • Simple solution: argparse considers a space filled string as a single argument if it is encapsulated by quotation marks.

    This input worked and "solved" the problem:

    -d "C:\SMTHNG\Name with spaces\MORE\file.csv"
    

    NOTICE: argument has "" around it.