Tengo un script de Python que acepta argumentos de cadena.
$ python script.py "one image.jpg" "another image.jpg"
Esto funciona como se esperaba.
Argumento de Python: ["one image.jpg", "another image.jpg"]
Si necesito pasar nombres de archivo, lo haría,
$ python script.py $(ls "/some/dir/*.jpg")
Argumento de Python: ["one", "image.jpg", "another", "image.jpg"]
Si uso el comando -Q
of ls
, puedo ajustar los resultados entre comillas dobles. Sin embargo, las citas se escapan en el script de Python, es decir.
$ python script.py $(ls -Q "/some/dir/*.jpg")
Argumento de Python: ['"one image.jpg"', '"another image.jpg"']
¿Cómo debo expandir los ls
nombres de archivo en cadenas adecuadas para usar como argumentos? (como en mi primer ejemplo)
"$(ls -Q '/some/dir/*.jpg')"
. Sin embargo, hay mejores alternativas como se indica en las respuestas.