anfänger problem mit modulen

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.
Antworten
0John0
User
Beiträge: 12
Registriert: Donnerstag 8. Februar 2007, 12:17

Dienstag 13. Februar 2007, 22:29

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.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 13. Februar 2007, 23:06

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
0John0
User
Beiträge: 12
Registriert: Donnerstag 8. Februar 2007, 12:17

Mittwoch 14. Februar 2007, 18:33

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?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 14. Februar 2007, 18:55

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
0John0
User
Beiträge: 12
Registriert: Donnerstag 8. Februar 2007, 12:17

Donnerstag 15. Februar 2007, 12:20

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?
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Donnerstag 15. Februar 2007, 14:05

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.
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 15. Februar 2007, 14:52

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Donnerstag 15. Februar 2007, 16:46

[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 ^^
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
0John0
User
Beiträge: 12
Registriert: Donnerstag 8. Februar 2007, 12:17

Freitag 16. Februar 2007, 00:32

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"??
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Freitag 16. Februar 2007, 01:12

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<<
Zuletzt geändert von Masaru am Freitag 16. Februar 2007, 01:18, insgesamt 3-mal geändert.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 16. Februar 2007, 01:14

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].
My god, it's full of CARs! | Leonidasvoice vs Modvoice
0John0
User
Beiträge: 12
Registriert: Donnerstag 8. Februar 2007, 12:17

Freitag 16. Februar 2007, 18:00

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:
Antworten