Seite 1 von 1

AttributeError: lower

Verfasst: Freitag 5. Dezember 2008, 10:29
von ET
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"?

Verfasst: Freitag 5. Dezember 2008, 10:58
von BlackJack
Wenn ich mal raten müsste, gibt der Qt-Dialog ein `QString`-Exemplar zurück und das hat keine `lower()`-Methode.

Verfasst: Freitag 5. Dezember 2008, 11:17
von ET
Danke... habe schon erkannt. Ich wusste nur nicht, dass es ein QString ist. Mit str(unicode(self.directorySource)) ist nun alles ok. :D

Verfasst: Freitag 5. Dezember 2008, 11:30
von ET
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:

Re: AttributeError: lower

Verfasst: Freitag 5. Dezember 2008, 15:55
von cofi
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 ;)

Re: AttributeError: lower

Verfasst: Freitag 5. Dezember 2008, 15:58
von numerix
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"?

Verfasst: Freitag 5. Dezember 2008, 19:30
von lunar
Es ist kürzer ... am besten wäre es natürlich, wenn das gar nicht da wäre ;)