I have a Python script which accepts string arguments.
$ python script.py "one image.jpg" "another image.jpg"
This works as expected.
Python argparse: ["one image.jpg", "another image.jpg"]
If I need to pass filenames I would do,
$ python script.py $(ls "/some/dir/*.jpg")
Python argparse: ["one", "image.jpg", "another", "image.jpg"]
If use the -Q
of ls
command, I can wrap results between double quotes. However, quotes stay escaped in Python script, ie.
$ python script.py $(ls -Q "/some/dir/*.jpg")
Python argparse: ['"one image.jpg"', '"another image.jpg"']
How should I expand ls
filenames into proper strings to use as arguments? (as in my very first example)
Best Answer
Don't parse
ls
. Just use:This performs shell globbing which replaces
/path/to/*.jpg
by the proper list.