AttributeError: lower

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
ET
User
Beiträge: 6
Registriert: Donnerstag 12. Juni 2008, 10:18
Wohnort: Bochum
Kontaktdaten:

Freitag 5. Dezember 2008, 10:29

Hallo liebe Community,

ich habe erst vor einigen tagen mit Python angefangen und bin jetzt auf etwas gestossen, wo ich leider nicht weiter weiss.

Ich habe eine simple GUI mit PyQT4 erstellt. Beim click auf einen Button ("Quellverzeichnis") wird bei mir diese Methode aufgerufen.

Code: Alles auswählen

def onSource(self):
        self.directorySource = QtGui.QFileDialog.getExistingDirectory(self,
                    self.tr("Verzeichnis mit allen TFWs (Quelle)"),
                    "C:\\Python25\\myScripts\\CopyTFW\\quelle",
                    QtGui.QFileDialog.DontResolveSymlinks | QtGui.QFileDialog.ShowDirsOnly)
        
        if not self.directorySource.isEmpty():      
            print os.path.isdir(self.directorySource)
            print os.path.normcase(self.directorySource)

und dan erhalte ich das als Ausgabe in der Konsole:

Code: Alles auswählen

True
Traceback (most recent call last):
  File "C:\Python25\myScripts\CopyTFW\CopyTFW.exe.py", line 24, in onSource
    print os.path.normcase(self.directorySource)
  File "C:\Python25\Lib\ntpath.py", line 42, in normcase
    return s.replace("/", "\\").lower()
AttributeError: lower
Das erste True sagt mir ja, dass es sich hier um einen Verzeichnis handelt, aber warum bekomme ich anschliessend ein Traceback wenn ich diesen Pfad in Normcase umwandeln möchte und warum sagt er "AttributeError: lower"?
BlackJack

Freitag 5. Dezember 2008, 10:58

Wenn ich mal raten müsste, gibt der Qt-Dialog ein `QString`-Exemplar zurück und das hat keine `lower()`-Methode.
ET
User
Beiträge: 6
Registriert: Donnerstag 12. Juni 2008, 10:18
Wohnort: Bochum
Kontaktdaten:

Freitag 5. Dezember 2008, 11:17

Danke... habe schon erkannt. Ich wusste nur nicht, dass es ein QString ist. Mit str(unicode(self.directorySource)) ist nun alles ok. :D
ET
User
Beiträge: 6
Registriert: Donnerstag 12. Juni 2008, 10:18
Wohnort: Bochum
Kontaktdaten:

Freitag 5. Dezember 2008, 11:30

ET hat geschrieben:Danke... habe schon erkannt. Ich wusste nur nicht, dass es ein QString ist. Mit str(unicode(self.directorySource)) ist nun alles ok. :D
neee... so ists besser!

unicode(self.directorySource) :oops:
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Freitag 5. Dezember 2008, 15:55

ET hat geschrieben:

Code: Alles auswählen

<snip>
    "C:\\Python25\\myScripts\\CopyTFW\\quelle",
<snap>
Besser:

Code: Alles auswählen

<snip>
    r"C:\Python25\myScripts\CopyTFW\quelle",
<snap>
;) Wobei das natürlich schwer plattformabhängig ist ;)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Freitag 5. Dezember 2008, 15:58

cofi hat geschrieben:
ET hat geschrieben:

Code: Alles auswählen

<snip>
    "C:\\Python25\\myScripts\\CopyTFW\\quelle",
<snap>
Besser:

Code: Alles auswählen

<snip>
    r"C:\Python25\myScripts\CopyTFW\quelle",
<snap>
Was ist daran "besser"?
lunar

Freitag 5. Dezember 2008, 19:30

Es ist kürzer ... am besten wäre es natürlich, wenn das gar nicht da wäre ;)
Antworten