Einzeiler mit "python -c" ?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
abgdf

Einzeiler mit "python -c" ?

Beitragvon abgdf » Mittwoch 5. September 2007, 16:22

Hallo,

wie schreibt man eigentlich Einzeiler in Python:

Code: Alles auswählen

python -c 'for i in range(10):print i'

funktioniert, aber

Code: Alles auswählen

python -c 'print "a";for i in range(10):print i'

nicht !

Wie macht man das denn dort mit den Einrückungen ?
Und wie macht man deutlich, daß man wieder aus der for-Schleife raus will ?

Viele Grüße
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 5. September 2007, 16:42

Die Frage ist eigentlich nicht wie sondern wieso. Es macht ja doch keinen Sinn.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
lunar

Beitragvon lunar » Mittwoch 5. September 2007, 18:33

Leonidas hat geschrieben:Die Frage ist eigentlich nicht wie sondern wieso. Es macht ja doch keinen Sinn.

Eigentlich doch... manche Dinge sind eben in Python einfacher und schneller als in sed, awk, etc. Bei Perl-Menschen sind solche Einzeiler recht beliebt.
BlackJack

Beitragvon BlackJack » Mittwoch 5. September 2007, 19:11

Aber das geht doch nicht mit `-c`!? Das ist IMHO viel zu beschränkt um ordentlich damit arbeiten zu können.

Ich benutze manchmal IPython um solche Aufgaben zu erledigen.
lunar

Beitragvon lunar » Mittwoch 5. September 2007, 19:41

BlackJack hat geschrieben:Aber das geht doch nicht mit `-c`!? Das ist IMHO viel zu beschränkt um ordentlich damit arbeiten zu können.

Eben, und das stört auch ein bisschen an -c. Das Perl-Äquivalent (Kommandozeilen-Option hab ich vergessen) ist einfacher und iirc auch mächtiger.

Ich benutze manchmal IPython um solche Aufgaben zu erledigen.

Ich auch. Eigentlich benutze ich sogar recht häufig ipython, und eher selten die bash für komplexere Shell-Aufgaben.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Beitragvon birkenfeld » Mittwoch 5. September 2007, 20:29

Dafür gibt es ein kleines handliches Modul (ich glaube es hieß "pyline"), das man dann so aufrufen kann:

Code: Alles auswählen

python -mpyline "...code..."


Es bereitet den Code dann entsprechend nach und füttert ihn erst dann an den Interpreter.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
abgdf

Beitragvon abgdf » Mittwoch 5. September 2007, 22:13

Ja, das ist hier:

http://aspn.activestate.com/ASPN/Cookbo ... ipe/437932

Danke !

Die Einzeiler sind offenbar in manchen Foren als schnelle Antwort auf "sed"-Fragen usw. sehr beliebt.
Da kann ich aber nicht so gut verlangen, "installier erstmal das Modul". Na, nehm ich halt Perl dafür.
Wegen der "-c"-Option hatte ich nur gedacht/gehofft, daß meine bevorzugte Sprache Vergleichbares hätte.
Aber ich sehe ein, daß das schwer mit den Grundregeln der klaren Syntax zu vereinbaren ist.

Jedenfalls vielen Dank und viele Grüße
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Re: Einzeiler mit "python -c" ?

Beitragvon mitsuhiko » Donnerstag 6. September 2007, 17:36

abgdf hat geschrieben:

Code: Alles auswählen

python -c 'print "a";for i in range(10):print i'

nicht !

Da musst du halt kreativ sein:

Code: Alles auswählen

python -c 'map(range(10), lambda x: __import__("sys").stdout.write("%d\n" % x))'
TUFKAB – the user formerly known as blackbird
lunar

Re: Einzeiler mit "python -c" ?

Beitragvon lunar » Donnerstag 6. September 2007, 17:39

blackbird hat geschrieben:
abgdf hat geschrieben:

Code: Alles auswählen

python -c 'print "a";for i in range(10):print i'

nicht !

Da musst du halt kreativ sein:

Code: Alles auswählen

python -c 'map(range(10), lambda x: __import__("sys").stdout.write("%d\n" % x))'

Boing... das meinst du hoffentlich nicht ernst. Glücklicherweise gibts ipython, so dass man auf obfuscated python verzichten kann.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Re: Einzeiler mit "python -c" ?

Beitragvon birkenfeld » Donnerstag 6. September 2007, 18:41

lunar hat geschrieben:Boing... das meinst du hoffentlich nicht ernst.


Nein, das meinte er nicht. Eigentlich wollte er die Argumente von map() umdrehen :)
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Google [Bot]