Serverliste importieren und abarbeiten

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.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

morytox hat geschrieben:von euren komischen join befehlen klappt keiner genügend ... also pfeif ich drauf und mach wieder alles in einer schönen einfachen + verbindung ... -.-* kein bock mehr
Erst einmal sind es nicht "unsere" und die sind auch nicht komisch!

Hast Du mein Beispiel mal in einer Shell ausprobiert? (Für das os.path.join musst Du natürlich noch das os.path-Modul importieren)

Hast Du überhaupt schon einmal solche Kleinigkeiten in einer Shell ausgetestet?

Diese Fehlermeldung sollte nicht so schwer zu deuten sein:

Code: Alles auswählen

File "deploymentf.py", line 57, in cleanuppng
os.system(os.path.join(["rm -f", pfadex, "/symbole.tgz"]))
TypeError: system() argument 1 must be string, not list
system() erwartet einen String, Du hast aber durch eine falsche Benutzung von os.path.join eine LIste generiert

Du müßtest dort also einen String einsetzen...

os.path.join() setzt einen Pfad zusammen! Ich weiß ja nicht was in pfadex drin steht, aber wenn es bereits fertige Pfade sind, musst Du hier natürlich nur "".join() nutzen:

Code: Alles auswählen

os.system(" ".join(["rm -f", " ".join(pfadex), "/symbole.tgz"]))
Also z.B. so:

Code: Alles auswählen

In [10]: pfadex = ["/foo", "/bar"]

In [11]: " ".join(["rm -f", " ".join(pfadex), "/symbole.tgz"])
Out[11]: 'rm -f /foo bar /symbole.tgz'
So, was ist daran nun so schwer bzw. mit ein bischen Eigeninitiative nicht zu schaffen?
morytox
User
Beiträge: 25
Registriert: Dienstag 15. September 2009, 13:17

os.path.join stellt mir keine mischung aus variablen und strings passend zusammen ...
kp was der brauch ...
unddas join hat mir auch nicht alles zusammengefügt...

ich vermute aber grad dass der fehler vllt sogar wo anders liegt ...

ich habe eine zeile drin die mir eine csv datei auseinandernimmt:

stage, server, pfadweb = line.split(';')

jedoch bekomm ich das letzte argument nur mit nem backspace am ende ...
das heißt wenn er die variable einsetzt setzt er mir dannach nen enter und der rest des pfades wird seperiert ... wie kann ich dieses enter ausschließen ?

*edit* PS: der letzte post war vllt nen bissel unfreundlich , dafür entschuldige ich mich ... bin nur n bissel unzufrieden weil es letzte woche noch funktioniert hat ...
Zuletzt geändert von morytox am Montag 21. September 2009, 13:30, insgesamt 1-mal geändert.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Leonidas hat geschrieben:Was heißt "genügend"?
Ich wuerde sagen, dass er die Dokumentation nicht gelesen hat. Besonders den Abschnitt:
os.path.join Dokumentation hat geschrieben:If any component is an absolute path, all previous components (on Windows, including the previous drive letter, if there was one) are thrown away, and joining continues.
morytox
User
Beiträge: 25
Registriert: Dienstag 15. September 2009, 13:17

und gerade da ist mein prob: ich brauch nicht einen Pfad: ich setzte eine Zeile zusammen die einer geschriebenen Zeile in der Shell entspricht, DH. befehle sowie pfade , zusammengesetzt aus strings und variablen...
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

morytox hat geschrieben:os.path.join stellt mir keine mischung aus variablen und strings passend zusammen ...
kp was der brauch ...
Dann lies es doch in der Doku nach... :roll: oder analysiere meine Beispiele! Man muss dem eben Strings (oder Unicode) übergeben...

Hast Du es denn mal in ner Shell ausprobiert? (Vielleicht bekomme ich ja mal auf die Frage eine Antwort)
unddas join hat mir auch nicht alles zusammengefügt...
Ich habe noch nir gehört, das "".join() etwas "weglässt" ;-)
ich habe eine zeile drin die mir eine csv datei auseinandernimmt:

stage, server, pfadweb = line.split(';')
Wieso nutzt Du nicht das csv-Modul? Hatte ich Dir nicht dazu sogar nen Snippet gepostet?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

morytox hat geschrieben:und gerade da ist mein prob: ich brauch nicht einen Pfad: ich setzte eine Zeile zusammen die einer geschriebenen Zeile in der Shell entspricht, DH. befehle sowie pfade , zusammengesetzt aus strings und variablen...
Auch dazu habe ich dir doch nen Beispiel gepostet:

Code: Alles auswählen

In [10]: pfadex = ["/foo", "/bar"]

In [11]: " ".join(["rm -f", " ".join(pfadex), "/symbole.tgz"])
Out[11]: 'rm -f /foo bar /symbole.tgz'
Wenn in pfadex fertige Pfade stehen, setzt dieses Konstrukt Dir alles schön zusammen...

So, nun musst Du Dir eben noch die Liste von fertigen Pfaden "bauen". Das kannst Du z.B. einzeln, oder durch eine Schleife, oder die map()-Funktion o.ä. lösen. Dabei verwendest Du os.path.join() und alles wird gut :-)

Um da nun konkreter helfen zu können, müßte man schon wissen, wie Du die Pfade zusammensetzt, also aus welchen Daten / Informationen und in welcher Datenstruktur die vorliegen.
morytox
User
Beiträge: 25
Registriert: Dienstag 15. September 2009, 13:17

die zeile die ich da jetzt benutz hab ich durch probieren selber so rausgefudnen , mit exception handling hab ich noch garkeine erfahrung gemacht und deswegen lass ich es erstmal raus bis ich mich da ran taste , hab ja nur ne ganz simple lösung gesucht und die zeile hat mir das dann so gegeben ... hatte auch mit den row befehlen rumhantiert aber kein brauchbares ergebnis (trotz doku, bzw openbook über python) erzielt ...
Der clou ist ja dass es am Fr. auch noch alles wunderbar ging. Da hat er es automatisch gemacht und kein fehler ausgeworfen ! Jetzt habe ich nurnoch nen par variablen über parameterübergabe aus der commandozeile eingebaut und schon funzt nix mehr obwohl es mit dem programm an sich garnichts zu tun hatte / daran geändert hatte
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

morytox hat geschrieben: Der clou ist ja dass es am Fr. auch noch alles wunderbar ging. Da hat er es automatisch gemacht und kein fehler ausgeworfen ! Jetzt habe ich nurnoch nen par variablen über parameterübergabe aus der commandozeile eingebaut und schon funzt nix mehr obwohl es mit dem programm an sich garnichts zu tun hatte / daran geändert hatte
Naja, wenn du Die Parameter übernimmst und diese dann irgend wo mit verbaust hat so etwas natürlich Auswirkungen!

Poste doch mal die Fehlermeldungen und den gesamten Code (am besten in ein Paste-bin a la paste.pocoo.org)! Ohne Fehlermeldungen und Code können wir nichts dazu sagen.

Und nun noch einmal (zum x.ten male :-D ):
Hyperion hat geschrieben: Hast Du es denn mal in ner Shell ausprobiert? (Vielleicht bekomme ich
ja mal auf die Frage eine Antwort)
morytox
User
Beiträge: 25
Registriert: Dienstag 15. September 2009, 13:17

ich probier nurnoch in der shell ^^ ;) alle fehlermeldungen hat mir die shell ausgespuckt die ich euch geschrieben habe! und letztendlich lag das problem daran dass er mir beim splitten der csv datei an das letzte element nen backspace angehangen hat, diesen habe ich dann einfach mit
pfadweb=string.rstrip(pfadweb)
beseitigt und voila es funzt ^^ .
Hab jetzt alles Lauffähig, auch wenn der Programmtext für euch wahrscheinlich recht leihenhaft, ohne exceptionhandling etc aussieht, er tut sein dienst und gut is ^^ 1. Schritt geschafft u nd für eure allgemeine hilfe bedank ich mich auch ganz herzlich =)
(Jetzt spiel ich endlich auch in der shell bis ich raus hab wie ich was brauche!)
Also danke nochmal!
Antworten