Verfasst: Montag 27. März 2006, 11:58
Also ist mal wieder GNU != POSIX..............
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Sie müssen auch nicht gequotet sein, da die argv auch Leerzeichen enthalten können:henning hat geschrieben:Hier sieht man das Problem: Die Dateinamen werden ungequoted übergeben!
Code: Alles auswählen
$ ll
insgesamt 4
-rwxr-x--- 1 x x 69 2006-03-27 14:33 aa.py
-rw-r----- 1 x x 0 2006-03-27 14:31 a b
-rw-r----- 1 x x 0 2006-03-27 14:31 c d
-rw-r----- 1 x x 0 2006-03-27 14:31 e f
-rw-r----- 1 x x 0 2006-03-27 14:31 g h
$ cat aa.py
#!/usr/bin/python
import sys
for n in sys.argv:
print "parameter",n
$ ./aa.py *
parameter ./aa.py
parameter aa.py
parameter a b
parameter c d
parameter e f
parameter g h
Natürlich werden die da "ungequotet" übergeben oder willst Du das die Programme Quotezeichen mitbekommen statt der richtigen Namen!? Ich verstehe immer noch Dein Problem nicht. Der `*` macht schon das richtige. Schaust Du hier:henning hat geschrieben:Okay, ich hab mich vielleicht echt undeutlich ausgedrückt, aaalso:Das sind drei Dateien mit Leerzeichen im Namen.Code: Alles auswählen
$ ls Ein langer Dateiname.txt Noch ein langer Name.foo Und noch einer.bar
Hier sieht man das Problem: Die Dateinamen werden ungequoted übergeben! Wenn ich jetzt z.B. ein python-programm habe, dass üder sys.argv Dateinamen erwartet, kriegt das schon Probleme die auseinanderzufummeln, und so gehts den meisten anderen Programmen auch.Code: Alles auswählen
$ echo * Ein langer Dateiname.txt Noch ein langer Name.foo Und noch einer.bar
Code: Alles auswählen
bj@s8n:~/tmp/test> ls
foo bar.txt spam eggs.txt test.py
bj@s8n:~/tmp/test> ./test.py *
['foo bar.txt', 'spam eggs.txt', 'test.py']
bj@s8n:~/tmp/test> cat test.py
#!/usr/bin/env python
import sys
print sys.argv[1:]
bj@s8n:~/tmp/test>