Seite 1 von 1

anfänger problem mit modulen

Verfasst: Dienstag 13. Februar 2007, 22:29
von 0John0
hallo zusammen
bis jetzt habe ich mein python tutorial durchgearbeitet und hab eigentlich alles verstanden und ich muss sagen es ist sehr interessant.:D doch nun hänge ich absolut fest.das thema handelt sich um module.
um dieses importieren von sys. mein problem ist das ich mir gar nicht vorstellen kann was man da überhaupt eingibt.
und vorrallem bekomme ich nicht das gleiche ergebniss wie im beispiel.
Das beispiel sieht so aus:

Code: Alles auswählen

#!/usr/bin/python

import sys

print 'Die Kommandozeilenparameter sind:'
for i in sys.argv:
           print i

print '\n\nDer PYTHONPATH ist', sys.path, '\n'

Ausgabe
$ python beispiel_sys.py Wir sind Argumente

Code: Alles auswählen

Die Kommandozeilenparameter sind:
beispiel_sys.py
Wir
sind
Argumente


Der PYTHONPATH ist ['/home/swaroop/byte/code', '/usr/lib/python23.zip',
'/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2',
'/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload',
'/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/gtk-2.0']


Ich benutze windows und python 2.5 aber bei mir sieht die ausgabe ganz anders aus. also vorrallem fehlt bei mir "wir sind Argumente".wo kommt den das überhaupt her?

ich hoffe jemand kann mir helfe.

Edit (Leonidas): Code in Tags gesetzt.

Re: anfänger problem mit modulen

Verfasst: Dienstag 13. Februar 2007, 23:06
von Leonidas
0John0 hat geschrieben:Ich benutze windows und python 2.5 aber bei mir sieht die ausgabe ganz anders aus. also vorrallem fehlt bei mir "wir sind Argumente".wo kommt den das überhaupt her?
Aus den Kommandozeilenargumenten die du dem Programm mitgibst. Wenn du keine Mitgibst, dann wird das auch nicht angezeigt.

Und das sys.path gleich dem PYTHONPATH ist, würde auch auch nicht unbedingt unterschreiben.

Re: anfänger problem mit modulen

Verfasst: Mittwoch 14. Februar 2007, 18:33
von 0John0
Danke für die antwort und für das umschreiben des codes.ich hatte noch nicht nachgelesen wie man das macht aber in der zwischenzeit habe ich das im testforum ausprobiert und werde bei nächsten mal den code gleich so eingeben.
im beispiel oben wird ja auch nirgends 'wir sind argumente' eingegeben?
oder muss ich zuerst eine datei erstellen,speichern und dann importieren?und dann steht erst 'wir sind argumente' oder was auch immer dann in dieser datei steht?
ich habe noch recht viel im internet zu diesem thema gefunden vielleicht finde ich ja noch selber heraus wie es funktioniert.
aber was meinst du mit:
Leonidas hat geschrieben:
Und das sys.path gleich dem PYTHONPATH ist, würde auch auch nicht unbedingt unterschreiben.
meinst du das im beispiel ein fehler ist?
was soll den dieser PYTHONPATH heissen?es zeigt mir einfach an von wo Module importiert werden?

Re: anfänger problem mit modulen

Verfasst: Mittwoch 14. Februar 2007, 18:55
von Leonidas
0John0 hat geschrieben:Danke für die antwort und für das umschreiben des codes.ich hatte noch nicht nachgelesen wie man das macht aber in der zwischenzeit habe ich das im testforum ausprobiert und werde bei nächsten mal den code gleich so eingeben.
Freut mich :)
0John0 hat geschrieben:im beispiel oben wird ja auch nirgends 'wir sind argumente' eingegeben?
Doch, hier:

Code: Alles auswählen

$ python beispiel_sys.py Wir sind Argumente
Wenn du da etwas anderes eintippst, wird auch etwas anderes ausgegeben.
0John0 hat geschrieben:aber was meinst du mit:
Leonidas hat geschrieben:Und das sys.path gleich dem PYTHONPATH ist, würde auch auch nicht unbedingt unterschreiben.
meinst du das im beispiel ein fehler ist?
was soll den dieser PYTHONPATH heissen?es zeigt mir einfach an von wo Module importiert werden?
Nein, mir ging es um die Bezeichnungen. Der Pfad wo die Module gesucht werden ist in ``sys.path`` abgelegt, er heißt aber nicht ``PYTHONPATH``. Denn ``PYTHONPATH`` ist etwas anderes: Es ist eine Umgebungsvariable, die der Interpreter beim starten ausliest und deren Inhalt in ``sys.path`` einfügt. Damit kannst du also Ordner temporär in ``sys.path`` ausnehmen, ohne den eigentlichen Quellcode ändern zu müssen.

Verfasst: Donnerstag 15. Februar 2007, 12:20
von 0John0
Mann du bist ja immer schnell mit antwort geben :)
mhm ja aber diese Zeile:

Code: Alles auswählen

$ python beispiel_sys.py Wir sind Argumente


Das ist ja die erste Zeile der Ausgbe gemäss dem Beispiel.Ich meine da kann ich ja dann nichts reinschreiben denn es ist ja schon die Ausgabe?

aber das hat ja nichts zu tun mit:

Code: Alles auswählen

#!/usr/bin/python

oder?
weil ich gebe das am anfang immer ein aber wenn ich dann das script öffnen dann erscheint das in der ausgabe nicht.nach dem beispiel müsste es dann ja so aussehen,was es bei mir nicht tut.

Code: Alles auswählen

$ python (name der datei).py


ich habe gedacht das sei nur für Linux benutzer notwendig?

Verfasst: Donnerstag 15. Februar 2007, 14:05
von nkoehring
Aaalso mal ganz langsam.

Es scheint du hast noch nicht verstanden, was Argumente und all das sind.
Die Ausgabe "Wir sind Argumente" kommt, weil du sie als Argument uebergibst.

Das heißt nicht, dass du das Script per Doppelklick oeffnest und sowas, sondern das du in deiner Windoze-Konsole in den Ordner des Scripts gehst und es von da aus ungefaehr so hier ausfuehrst:

Code: Alles auswählen

python beispiel_sys.py Wir sind Argumente
oder so:

Code: Alles auswählen

python beispiel_sys.py Bla bla Blubb
...das "Wir sind Argumente" bzw "Bla bla Blubb" wird dann ausgegeben, weil die Aufgabe deines Programmes nichts weiter ist, als alle Argumente (also hier sind es 3) nacheinander auszugeben.

Verfasst: Donnerstag 15. Februar 2007, 14:52
von Leonidas
0John0 hat geschrieben:mhm ja aber diese Zeile:

Code: Alles auswählen

$ python beispiel_sys.py Wir sind Argumente


Das ist ja die erste Zeile der Ausgbe gemäss dem Beispiel.Ich meine da kann ich ja dann nichts reinschreiben denn es ist ja schon die Ausgabe?
Nein, das ist eigentlich die Eingabe. Das Dollarzeichen zeigt an, dass es in eine System-Shell eingegeben werden soll (das liegt daran dass man als normaler User unter Unices eine Eingabezeile ala ``leonidas@metodij:~$`` hat). Dann tippst du daszuführende Programm ein (in diesem Fall ``python``), danach gibst du ihm Argumente mit, wie eben ``beispiel_sys.py`` und ``Wir sind Argumente``. Python startet, führt ``beispiel_sys.py`` aus und gibt die Argumente ``Wir sind Argumente`` an das Skript weiter.

0John0 hat geschrieben:aber das hat ja nichts zu tun mit:

Code: Alles auswählen

#!/usr/bin/python

oder?
Nein, nicht direkt - Das ist die Shebang und diese befindet sich in der Regel in der ersten Zeile des Skriptes. Das ist eine Art Steueranweisung für die Shell.
0John0 hat geschrieben:weil ich gebe das am anfang immer ein aber wenn ich dann das script öffnen dann erscheint das in der ausgabe nicht.nach dem beispiel müsste es dann ja so aussehen,was es bei mir nicht tut.
Das brauchst du nicht anzugeben - es fängt mit ``#`` an und wird von Python daher ignoriert.
0John0 hat geschrieben:

Code: Alles auswählen

$ python (name der datei).py
Eben, du gibst ja keine Argumente mit. Dann erscheinen kleine. Logisch, oder? Wo sollten sie denn auch herkommen.
0John0 hat geschrieben:ich habe gedacht das sei nur für Linux benutzer notwendig?
Sehbang ist nur für Unix-Nutzer sinnvoll, aber stören tut es nie und daher rate ich generell an, den hinzuschreiben.

Verfasst: Donnerstag 15. Februar 2007, 16:46
von nkoehring
[OFFTOPIC]
Ach genau... Shebang hieß es... ein so kultiger Name und ich vergesse den. Tz, das sind die ganzen Windoze-User um mich... die lassen mich degenerieren ^^
Aber sie werden es nicht schaffen... ich bleib bei meine (im Moment) Gentoo und bei offenen Systemen :D
[/OFFTOPIC]

PS: sorry, musste einfach raus ^^

Verfasst: Freitag 16. Februar 2007, 00:32
von 0John0
Ok also soll ich:

Code: Alles auswählen

 $ python beispiel_sys.py wir sind argumente
im system shell eingeben?

Habe ich gemacht aber bei mir kommt immer syntax fehler aber ich versthe nicht warum...?? Habe es auf verschiedene weise probiert im "python shell" und in der "command line"! Habe ich da was falsch gemacht?? Oder was ist genau das "system shell" etwa nicht das "python shell"??

Verfasst: Freitag 16. Februar 2007, 01:12
von Masaru
Bei Syntax Fehlern, diese am besten einmal + das Script posten. Dann können wir genauer etwas damit anfangen.

Mit System Shell ist in Deinem Falle unter Windows die
"Eingabgeaufforderung" (cmd.exe) gemeint:
Bild

Dort rufst Du dann den Python Interpreter gefolgt von dem Script Dateinamen und dann halt deinen Argumenten auf.

Bsp. Schritte:
- Windows Eingabeaufforderung (cmd.exe) öffnen
- in das Verzeichnis mit deinem Script wechseln
- python beispiel_sys.py wir sind argumente eintippen

Achja, unter Windows ist mit Installation von Python in der Regel der Python Interpeter in den Umgebungsvariabeln eingetragen sowie .py Dateiendungen dieser Anwendung zum automatischen Öffnen zugewiesen.
Daher kannst Du eigentlich auch python (python.exe) im Aufruf weglassen ;).

Zu deinem Script ... der einfachheit halber würde ich einfach mal folgendes testen:

Code: Alles auswählen

import sys

print sys.argv
Gruß,
>>Masaru<<

Verfasst: Freitag 16. Februar 2007, 01:14
von Leonidas
0John0 hat geschrieben:Ok also soll ich:

Code: Alles auswählen

 $ python beispiel_sys.py wir sind argumente
im system shell eingeben?
Nein, das Dollarzeichen musst du natürlich weglassen.
0John0 hat geschrieben:Habe ich gemacht aber bei mir kommt immer syntax fehler aber ich versthe nicht warum...??
Weil du es in den Interaktiven Python-Interpreter eingetippt hast udn nicht in die Eingabeaufforderung.
0John0 hat geschrieben:Oder was ist genau das "system shell" etwa nicht das "python shell"??
Die Eingabeaufforderung. Schau am besten mal in die [wiki]FAQ#WieStarteIchSkripte[/wiki].

Verfasst: Freitag 16. Februar 2007, 18:00
von 0John0
Endlich! :D Ich habe es geschafft
vielen dank für eure hilfe und das ihr mir immer wieder retour gepostet habt:)
ausserdem ist jetzt auch das mit dem $ klar und das mit der Shell :wink:
also ich mach mal weiter und melde mich dann wieder bei schwierigkeiten :wink: