Probleme bei Kobination von raw_input() und os.path.join()

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
boney
User
Beiträge: 22
Registriert: Dienstag 20. November 2007, 15:00

Hiho!

Ich will einen neuen Ordner im aktuellen Verzeichnis erstellen lassen (mit Wunschname des Users) und überprüfe erst, ob der Ordner schon existent ist:

Code: Alles auswählen

import os
ordner = raw_input("Name des Ordners: ")
pfad = os.path.join(os.getcwd(),ordner)

if os.path.isdir(pfad):
    print "Jaaa es ist ein Ordner"
Problem ist, dass nichts angezeigt wird, obwohl der Ordner exisitert. Das geht auch schön mit Python zu überprüfen mit:

Code: Alles auswählen

pfad2 = os.path.join(os.getcwd(),"test")
if os.path.isdir(pfad2):
    print "Nr. 2 ist ein Ordner"
Ich verstehe nicht, warum er beim 1. Bsp nichts anzeigt. Der Pfad müßte doch identisch sein (was er laut Ausgabe auch ist). raw_input() liefert ja auch einen String und "test" ist ja auch ein String.
Wo liegt mein Denkfehler? Bzw. wie kann man es andres machen?

Vielen Dank!

Lieber Gruß
Boney
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

erstmal scheint mir die überprüfung "isdir" unlogisch, denn die sagt False, wenn zwar eine Datei existiert, diese aber kein verzeichnis ist.

Zweitens funktioniert bei mir (ubuntu, gutsy) der Code scheinbar.
Hast du dir mal den Pfad ausgeben lassen, der mit deiner Eingabe gebaut wird? Ist da vielleicht irgendwas wie Laufwerksbuchstaben (kann ich nicht nachvollziehen ;) ) falsch?
boney
User
Beiträge: 22
Registriert: Dienstag 20. November 2007, 15:00

Mir geht es nur um ein Verzeichnis. Dateien sind mir egal.

Die Ausgabe von den Pfaden sieht dann so aus:

Code: Alles auswählen

C:\workspace\queue\test
C:\workspace\queue\test
Also m.E. indentisch. Bin (wie man sieht) unter Windows unterwegs.
Ich finde das total strange.......
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Mir geht es nur um ein Verzeichnis. Dateien sind mir egal.
Sicher? Du würdest also versuchen, ein Verzeichnis anzulegen, wenn es bereits eine Datei gibt die so heist, was das ganze fehlschlagen lassen muss?

Haben die ausgegebenen Pfade folgende Leerzeichen? Lass die mal mit "" drumrum ausgeben.
boney
User
Beiträge: 22
Registriert: Dienstag 20. November 2007, 15:00

Ja, sry, stimmt natürlich was du sagst mit den Dateien. Hab das vorhin falsch aufgefasst.

Wie meinst du das mit den "" drum rum ausgeben lassen?
So wohl nicht, oder?

Code: Alles auswählen

print "pfad"
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Code: Alles auswählen

print '"' + pfad2 + '"'
Dadurch erkennt er, ob'n Leerzeichen am Ende ist.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Das kann repr doch viel besser...
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
boney
User
Beiträge: 22
Registriert: Dienstag 20. November 2007, 15:00

Perfekt :) raw_input zieht gleich noch das "ENTER" mit rein.

Code: Alles auswählen

"C:\workspace\queue\test
"
"C:\workspace\queue\test"
Ist jetzt nur noch die Frage wie ich es rausbekomme. Gibt's da irgendwas vorgefertigtes?
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

boney hat geschrieben:Perfekt :) raw_input zieht gleich noch das "ENTER" mit rein.

Code: Alles auswählen

"C:\workspace\queue\test
"
"C:\workspace\queue\test"
Ist jetzt nur noch die Frage wie ich es rausbekomme. Gibt's da irgendwas vorgefertigtes?
.strip()

@Rebecca
Ein Tag, an dem man nichts lernt, ist ein verlorener Tag. Danke.
boney
User
Beiträge: 22
Registriert: Dienstag 20. November 2007, 15:00

Perfekt. Gracias an alle für euren Hirnschmalz!
BlackJack

Wobei man vielleicht noch anmerken sollte, das `raw_input()` *kein* '\n' am Ende liefert. Wenn es das doch tut ist irgendwas kaputt. Ich glaube irgendeine IDE hat dieses tolle "Feature".
boney
User
Beiträge: 22
Registriert: Dienstag 20. November 2007, 15:00

Jep, da könntest du gut recht haben. Ich "entwickle ;)" unter Eclipse mit pydev
Antworten