Eu tenho um script Python que aceita argumentos de seqüência de caracteres.
$ python script.py "one image.jpg" "another image.jpg"
Isso funciona conforme o esperado.
Argparse do Python: ["one image.jpg", "another image.jpg"]
Se eu precisar passar nomes de arquivos, eu faria,
$ python script.py $(ls "/some/dir/*.jpg")
Argparse do Python: ["one", "image.jpg", "another", "image.jpg"]
Se usar o comando -Q
of ls
, posso agrupar os resultados entre aspas duplas. No entanto, as aspas permanecem escapadas no script Python, ie.
$ python script.py $(ls -Q "/some/dir/*.jpg")
Argparse do Python: ['"one image.jpg"', '"another image.jpg"']
Como devo expandir os ls
nomes de arquivos em strings apropriadas para usar como argumentos? (como no meu primeiro exemplo)
"$(ls -Q '/some/dir/*.jpg')"
. No entanto, existem alternativas melhores, conforme indicado pelas respostas.