von GUI erstellten Pfad mit copytree kopieren

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Arno
User
Beiträge: 10
Registriert: Mittwoch 22. September 2010, 13:47

Guten Tag zusammen..Nachdem mir bei meinem ersten Problem erfolgreich geholfen werden konnte, habe ich bereits eine nächste Frage.
Das Ziel meines Problemes ist mit shutil.copytree ein Verzeichniss in ein anderes Verzeichniss zu kopieren. Dies funktioniert auch tadellos wenn ich die Pfade von Quelle und Ziel von Hand eingebe.. Bsp: C:\Temp\X\Y. Jetz möchte ich die Quelle aber nicht statisch eingeben sondern über ein GUI auswählen können. Das heisst ich übergebe den ausgelesenen Pfad einer Variable und setzt die dann als Quelle bei shutil.copytree ein. Nur leider bekomme ich dauernd folgende Fehlermeldung:

Traceback (most recent call last):
File "C:\temp\Laesser\Entwicklung\Script\wxScriptH.py", line 64, in Start
symlinks = False)
File "C:\Python27\lib\shutil.py", line 168, in copytree
names = os.listdir(src)
WindowsError: [Error 123] Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch: u'C:\\Dokumente und Einstellungen\\Scharn\\Eigene Dateien\\00 SIGMATEK\\Administration\n\\*.*'

Wenn ich aber diese Variable Printe dann sieht die so aus und wird korrekt ausgegeben und funktioniert auch mit dem kopieren:

C:\Dokumente und Einstellungen\Scharn\Eigene Dateien\00 SIGMATEK\Administration

Hier noch mein Code zu diesem Problem:

Code: Alles auswählen

 #Bei Start wird das kopieren des Trees von Quelle nach Ziel gehandhabt
    def Start(self, event): # wxGlade: MyFrame.<event_handler>
        #shutil.copytree(r"C:\Temp\Laesser\Entwicklung\Beta\B10134",    #Diese Version von copytree funktioniert
        #                r"C:\Temp\Laesser\Release\R10134\Software",
        #                symlinks = False)

        print test                                                                            #Variable test in der sich mein Pfad befindet

        shutil.copytree(test,                                                              #Diese Version von copytree funktioniert nicht
                        r"C:\Temp\Laesser\Release\R10134\Software",
                        symlinks = False)    
        
        event.Skip() 
Kann mir da jemand weiterhelfen?..Ich habe schon vieles probiert aber nichts hat geholfen.
Liegt das Problem ev am unicode?
Besten Dank im voraus.
Grüsse Arno
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Hmm, dein Pfadname enthält ein "\n", also ein Newline, wo kommt das her?
Arno
User
Beiträge: 10
Registriert: Mittwoch 22. September 2010, 13:47

Hallo hier bin ich nochmals..Heute scheint ein guter Montag zu sein. Ich hab das Problme endeckt wo ich den Fehler gemacht hatte.
Ich hab den Pfad folgendermassen ausgelesen gemäss Beispiele von wxPython:

Code: Alles auswählen

test = '%s\n' % dlg.GetValue()
Mit folgendem Befehl funktioniert es:

Code: Alles auswählen

test = dlg.GetValue()
Grüsse Arno
Arno
User
Beiträge: 10
Registriert: Mittwoch 22. September 2010, 13:47

Danke mkesper für deine Hilfe.
Die Newline kam von einem Beispiel (DirDialog) in wxPython.
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Kaum macht man es richtig, geht es auch schon! ;)
Das mit dem Newline macht vermutlich im Original Sinn, weil das Ergebnis auf ein write()-Methode ausgegeben wird.
Arno
User
Beiträge: 10
Registriert: Mittwoch 22. September 2010, 13:47

:D Da hast du recht..Nur ist aller Anfang schwer :-)
Antworten