Ich habe ein Python-Skript, das Zeichenfolgenargumente akzeptiert.
$ python script.py "one image.jpg" "another image.jpg"
Dies funktioniert wie erwartet.
Python argparse: ["one image.jpg", "another image.jpg"]
Wenn ich Dateinamen übergeben müsste, würde ich tun,
$ python script.py $(ls "/some/dir/*.jpg")
Python argparse: ["one", "image.jpg", "another", "image.jpg"]
Wenn Sie den Befehl -Q
of verwenden ls
, kann ich Ergebnisse zwischen doppelte Anführungszeichen setzen. Anführungszeichen bleiben jedoch im Python-Skript maskiert, d. H.
$ python script.py $(ls -Q "/some/dir/*.jpg")
Python argparse: ['"one image.jpg"', '"another image.jpg"']
Wie soll ich ls
Dateinamen in geeignete Zeichenfolgen erweitern, um sie als Argumente zu verwenden? (wie in meinem allerersten Beispiel)
command-line
bash
python
Autorun
quelle
quelle
"$(ls -Q '/some/dir/*.jpg')"
. Es gibt jedoch bessere Alternativen, wie in den Antworten angegeben.Antworten:
Nicht analysieren
ls
. Benutz einfach:Dies führt ein Shell-Globbing durch, das
/path/to/*.jpg
durch die richtige Liste ersetzt wird.quelle
Ich denke , die glob Antwort oben ist am besten, aber
xargs
undfind
ist auch eine Lösung , die manchmal verwendet werden kann.Dies funktioniert, weil
-print0
onfind
die Ausgabe mit Null-Bytes anstelle von Leerzeichen trennt und die-0
on-xargs-Befehlszeile davon ausgeht, dass die Eingabe durch Null-Bytes getrennt ist.quelle