Python-Start von wo aus

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
friseisai
User
Beiträge: 1
Registriert: Mittwoch 9. Januar 2008, 15:43

Montag 21. April 2008, 16:27

hallo Python-K(o)enner
wollte herausfinden, ob und unter welcher IDE
Python gestartet wurde oder direkt in der Kommandozeile
wie z.Bsp. ein .py-file im Explorer angeklickt wird.
verwendet wird Python 2.5.2
hier das py-Testfile:
------------------------------
belegt=dir()
print " Start: belegt=",len(belegt),dir()
#nun bel.Variablen erzeugen
var1="1"
var2="2"
var3="3"
var4="4"
var5="5"
var6="6"
var7="7"
var8="8"
var9="9"
var10="10"
var11="11"
var13="13"

import math
import os
#und nun nochmals dir()
belegt=dir()
print " Ende: belegt=",len(belegt),dir()
print "\n fertig"
-----------------------------------
hier nun die verschiedenen Ergebnisse:
unter PyScripter-IDE
Start: belegt= 5 ['__builtins__', '__doc__', '__file__', '__name__', 'belegt',
'pyscripter']
Ende: belegt= 20 ['__builtins__', '__doc__', '__file__', '__name__', 'belegt',
'math', 'os', 'pyscripter', 'var1', 'var10', 'var11', 'var13', 'var2', 'var3',
'var4', 'var5', 'var6', 'var7', 'var8', 'var9']
fertig
-----------------------------
unter PythonWin-IDE
Start: belegt= 4 ['__builtins__', '__doc__', '__name__', 'belegt', 'pywin']
Ende: belegt= 19 ['__builtins__', '__doc__', '__name__', 'belegt', 'math', 'os',
'pywin', 'var1', 'var10', 'var11', 'var13', 'var2', 'var3', 'var4', 'var5', 'var6',
'var7', 'var8', 'var9']
fertig
---------------------------------
unter IDLE
Start: belegt= 3 ['__builtins__', '__doc__', '__name__', 'belegt']
Ende: belegt= 18 ['__builtins__', '__doc__', '__name__', 'belegt', 'math', 'os',
'var1', 'var10', 'var11', 'var13', 'var2', 'var3', 'var4', 'var5', 'var6', 'var7',
'var8', 'var9']

fertig
-----------------------------
unter pyPE-IDE
Start: belegt= 4 ['__builtins__', '__doc__', '__file__', '__name__', 'belegt']
Ende: belegt= 19 ['__builtins__', '__doc__', '__file__', '__name__', 'belegt',
'math', 'os', 'var1', 'var10', 'var11', 'var13', 'var2', 'var3', 'var4', 'var5',
'var6', 'var7', 'var8', 'var9']
fertig


------------------------------------
die Python-Shell direkt mit dem testprogramm gestartet

Start: belegt= 4 ['__builtins__', '__doc__', '__file__', '__name__', 'belegt']
Ende: belegt= 19 ['__builtins__', '__doc__', '__file__', '__name__', 'belegt',
'math', 'os', 'var1', 'var10', 'var11', 'var13', 'var2', 'var3', 'var4', 'var5',
'var6', 'var7', 'var8', 'var9']

fertig
----------------------
festzustellen ist:
kann der Python-Interpreter nicht recht zaehlen oder wie laesst sich
beim Start die unterschiedlichen Angaben erklaeren?
warum taucht "__file__" mal auf,dann wieder nicht ??
?? warum taucht bei IDLE "IDLE" oder bei pyPE "pyPE" nicht auf ??
---------
Ich wollte urspruenglich nur das schliessen des Ausgabe-Fensters verhindern,
(mit raw_input("cr=exit") zum Bsp. am Ende des Programms)
wenn es direkt gestartet wird, dass man die Ergebnisse noch ansehen konnte.
Anderseits aber in der IDE nicht mit einer dann unnoetigen Eingabe-Aufforderung
konfrontiert wird, da hier die Ausgabe sowieso stehen bleibt.

Oder gibt es eine elegantere Loesung?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 21. April 2008, 17:18

Hallo friseisai, willkommen im Forum,
friseisai hat geschrieben: kann der Python-Interpreter nicht recht zaehlen oder wie laesst sich
beim Start die unterschiedlichen Angaben erklaeren?
Das ist nicht ein Fehler des Interpreters, sondern deiner Logik. Du schaust nach welche Namen gebunden sind und bekommst, sagen wir mal 4 Namen zurück. Dieses Ergebnis bindest du an den Namen ``belegt`` und schaust nun nach welche Namen belegt sind. Da ist es ja nur logisch, dass da nun 5 raus kommt.
friseisai hat geschrieben:warum taucht "__file__" mal auf,dann wieder nicht ??
Weil das abhängt, wie die IDE das Programm aufruft.
friseisai hat geschrieben: ?? warum taucht bei IDLE "IDLE" oder bei pyPE "pyPE" nicht auf ??
Weil sowas non-standard ist. Di kannst nich davon ausgehen, dass eine IDE irgendeinen Müll in den Namensraum wirft.
friseisai hat geschrieben: Oder gibt es eine elegantere Loesung?
Ja. Lass einfach so einen Blödsinn. Eine gescheite IDE zeigt dir die ausgaben von stderr, da brauchst du dich nicht um zugehende Fenster zu kümmern. Ansonsten gibt es noch meine etwas saubere "on-exit"-Lösung, aber von der Benutzung von so etwas nur um irgendwelche blöden Fenster offen zu halten rate ich ab.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten