Diverses zu Importen/ssh und scp/_DEBUG_/ping
Verfasst: Donnerstag 31. Juli 2014, 15:34
Hallo zusammen,
ich habe als Einsteiger mal ein paar Fragen, habe diese einfach mal in ein Thema gepackt, weil ich denke, dass es nicht lohnt jeweils ein eigenes dafür aufzumachen. Vielleicht könnt ihr mir ein paar Hinweise geben?
1) Import
Da ich als Python-Neuling motiviert bin, mir gleich einen guten Programmierstil anzueignen, mal eine Frage zu den Importen. Diese werden, soweit mir nun bekannt, mit "import <Python-Datei>" formuliert.
Dabei wird die zu importierende Datei ja (Reihenfolge weiß ich aber nicht):
- zuerst im aktuellen Verzeichnis gesucht und dann
- in den PATH-Verzeichnissen.
Kann man denn beim import-Befehl auch einen Pfad mitgeben? Meine Versuche diesbezüglich scheinen das zu verneinen.
Zum Beispiel hätte ich gerne mein Hauptprogramm im Verzeichnis "D:\Beispiel" und die importe des Hauptprogramms im Verzeichnis daraunter, also "D:\Beispiel\imports" abgelegt, so dass im Programmverzeichnis möglichst wenige *.py-Dateien stehen. Lässt sich das realisieren oder wie löst man das i.d.R. sauber in Python? Werden die Import-Dateien eigentlich in der finalen Version eigentlich als *.py oder als *.pyc-Dateien zur Verfügung gestellt?
2) ssh/scp
Gibt es eigentlich eine empfehlenswerte Python-Bibliothek die ssh/scp-Funktionalität zur Verfügung stellt? Gefunden habe ich an externen Bibliotheken "paramiko", "pexpect" und "pyssh", habe diese aber noch nicht getestet. Idealerweise würde ich mich aber lieber bei den Standardbibliotheken bedienen, sofern vorhanden.
3) _DEBUG
Während der Codierung meines Projektes habe ich mir mal erlaubt eine globale Variable "DEBUG" zu definieren, die mir je nach Inhalt die Programmausgabe entsprechend anders gestaltet.
In diesem Zusammenhang bin ich auf den internen Bezeichner "_DEBUG" gestoßen, dieser scheint nur über die "-O"-Option beeinflussbar zu sein. Ich vermute, damit ist nicht eine Option in der Aufrufzeile gemeint, das hat jedenfalls nicht funktioniert. Wofür wird dieser denn verwendet? Kann ich den evtl. auch für eigene Zwecke verwenden um den Programmablauf zu beeinflussen. Ist "_DEBUG" sowas wie eine Compiler-Direktive?
4)
Gibt es in Python sowas wie eine eingebaute Ping-Funktion? Bislang nutze ich immer "os.system('ping <host>')", aber vielleicht gibt es noch eine aus eurer Sicht bessere Variante Funktionen des Netzwerks zu nutzen. Oder ist das so der übliche Weg in Python viel mit Betriebssystemkommandos zu arbeiten?
Noch ein Nachtrag:
5)
Weiß jemand, wie man während der Laufzeit den Namen der aktuellen Funktion ermitteln kann?
Im folgenden Aufbau muss ich leider explizit das "hallo.__name__" angeben, lässt sich das ggf. allgemeiner formulieren?
def hallo():
print "Ich bin in " + hallo.__name__
hallo()
Ausgabe:
Ich bin in hallo
Toll wäre, wenn ich z. B. einmal eine Funktion WoBinIch() schreiben könnte, die von mehreren Funktionen zu beginn aufgerufen wird und ausgibt, wo sich der IP gerade befindet. Also ohne jedesmal eine extra angepasste Print-Anweisung anzugeben.
Danke für die Unterstützung und schöne Grüße
stielchen
ich habe als Einsteiger mal ein paar Fragen, habe diese einfach mal in ein Thema gepackt, weil ich denke, dass es nicht lohnt jeweils ein eigenes dafür aufzumachen. Vielleicht könnt ihr mir ein paar Hinweise geben?
1) Import
Da ich als Python-Neuling motiviert bin, mir gleich einen guten Programmierstil anzueignen, mal eine Frage zu den Importen. Diese werden, soweit mir nun bekannt, mit "import <Python-Datei>" formuliert.
Dabei wird die zu importierende Datei ja (Reihenfolge weiß ich aber nicht):
- zuerst im aktuellen Verzeichnis gesucht und dann
- in den PATH-Verzeichnissen.
Kann man denn beim import-Befehl auch einen Pfad mitgeben? Meine Versuche diesbezüglich scheinen das zu verneinen.
Zum Beispiel hätte ich gerne mein Hauptprogramm im Verzeichnis "D:\Beispiel" und die importe des Hauptprogramms im Verzeichnis daraunter, also "D:\Beispiel\imports" abgelegt, so dass im Programmverzeichnis möglichst wenige *.py-Dateien stehen. Lässt sich das realisieren oder wie löst man das i.d.R. sauber in Python? Werden die Import-Dateien eigentlich in der finalen Version eigentlich als *.py oder als *.pyc-Dateien zur Verfügung gestellt?
2) ssh/scp
Gibt es eigentlich eine empfehlenswerte Python-Bibliothek die ssh/scp-Funktionalität zur Verfügung stellt? Gefunden habe ich an externen Bibliotheken "paramiko", "pexpect" und "pyssh", habe diese aber noch nicht getestet. Idealerweise würde ich mich aber lieber bei den Standardbibliotheken bedienen, sofern vorhanden.
3) _DEBUG
Während der Codierung meines Projektes habe ich mir mal erlaubt eine globale Variable "DEBUG" zu definieren, die mir je nach Inhalt die Programmausgabe entsprechend anders gestaltet.
In diesem Zusammenhang bin ich auf den internen Bezeichner "_DEBUG" gestoßen, dieser scheint nur über die "-O"-Option beeinflussbar zu sein. Ich vermute, damit ist nicht eine Option in der Aufrufzeile gemeint, das hat jedenfalls nicht funktioniert. Wofür wird dieser denn verwendet? Kann ich den evtl. auch für eigene Zwecke verwenden um den Programmablauf zu beeinflussen. Ist "_DEBUG" sowas wie eine Compiler-Direktive?
4)
Gibt es in Python sowas wie eine eingebaute Ping-Funktion? Bislang nutze ich immer "os.system('ping <host>')", aber vielleicht gibt es noch eine aus eurer Sicht bessere Variante Funktionen des Netzwerks zu nutzen. Oder ist das so der übliche Weg in Python viel mit Betriebssystemkommandos zu arbeiten?
Noch ein Nachtrag:
5)
Weiß jemand, wie man während der Laufzeit den Namen der aktuellen Funktion ermitteln kann?
Im folgenden Aufbau muss ich leider explizit das "hallo.__name__" angeben, lässt sich das ggf. allgemeiner formulieren?
def hallo():
print "Ich bin in " + hallo.__name__
hallo()
Ausgabe:
Ich bin in hallo
Toll wäre, wenn ich z. B. einmal eine Funktion WoBinIch() schreiben könnte, die von mehreren Funktionen zu beginn aufgerufen wird und ausgibt, wo sich der IP gerade befindet. Also ohne jedesmal eine extra angepasste Print-Anweisung anzugeben.
Danke für die Unterstützung und schöne Grüße
stielchen