Seite 3 von 3

Verfasst: Montag 21. September 2009, 12:22
von morytox
kannst du bitte ein anwendungsbeispiel für beides geben ? auf seite 2 Des tepics war darüber schon einmal die rede und da wurde mir das os.join angedreht o.O welches von beiden wurde nun gemeint, was ist für mich am sinnvollsten ?

*edit*

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

Verfasst: Montag 21. September 2009, 12:26
von Hyperion
morytox hat geschrieben:kannst du bitte ein anwendungsbeispiel für beides geben ? auf seite 2 Des tepics war darüber schon einmal die rede und da wurde mir das os.join angedreht o.O welches von beiden wurde nun gemeint, was ist für mich am sinnvollsten ?
Ja, sorry, war mein Fehler.

Code: Alles auswählen

# Beispiel für os.path.join()
os.path.join("/home/foo/", "bar/", "file.txt")
# Beispiel für join()
",".join(["Hallo", "Welt"])

Verfasst: Montag 21. September 2009, 12:31
von cofi
morytox hat geschrieben:kannst du bitte ein anwendungsbeispiel für beides geben ?
Nein, aber ich leiste gerne Hilfe zur Selbsthilfe.
Library Reference fuer 2.4: http://www.python.org/doc/2.4.4/lib/lib.html
``os.path``: http://www.python.org/doc/2.4.4/lib/module-os.path.html
String Methoden: http://www.python.org/doc/2.4.4/lib/string-methods.html

Verfasst: Montag 21. September 2009, 12:52
von morytox
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

Verfasst: Montag 21. September 2009, 13:12
von Leonidas
Was heißt "genügend"?

Verfasst: Montag 21. September 2009, 13:18
von Hyperion
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?

Verfasst: Montag 21. September 2009, 13:28
von morytox
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 ...

Verfasst: Montag 21. September 2009, 13:29
von cofi
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.

Verfasst: Montag 21. September 2009, 13:31
von morytox
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...

Verfasst: Montag 21. September 2009, 13:34
von Hyperion
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?

Verfasst: Montag 21. September 2009, 13:38
von Hyperion
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.

Verfasst: Montag 21. September 2009, 13:39
von morytox
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

Verfasst: Montag 21. September 2009, 14:05
von Hyperion
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)

Verfasst: Dienstag 22. September 2009, 09:07
von morytox
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!