Verzeichnisse kopieren

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.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Py-Prog hat geschrieben:Last mich raten ich hab (wieder mal) vergessen das da noch '\\' dazugehört.
Nein du sollst nicht raten, genauso solltest du keine Zeichen in den Quelltext streuen und hoffen dass es klappt, sondern einfach anschauen, was da steht (`print`, `logging`, `Debugger`, ...) dir dann ueberlegen wie es dazu kam und dann das richtige Gegenmittel waehlen.
Da ist keine Magie dabei.
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Ha, eigentlich geht es aber mich würde nur noch interesieren warum sind viele (nicht alle) dateien 0kb groß (also leer)?
Das ist die Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Dokumente und Einstellungen\Adrian\Desktop\Fastbackup.auto.pyw", line 91, in <module>
    backup('D:\\Py-Prog\\Python\\Projekte\\Backup\\Backupinfo\\')
  File "C:\Dokumente und Einstellungen\Py-Prog\Desktop\backup.auto.pyw", line 36, in backup
    Kopieren(Pfad, Ziel)
  File "C:\Dokumente und Einstellungen\Py-Prog\Desktop\Fastbackup.auto.pyw", line 87, in Kopieren
    Kopieren(path+'\\'+i, ziel+'\\'+i)
  File "C:\Dokumente und Einstellungen\Py-Prog\Desktop\backup.auto.pyw", line 87, in Kopieren
    Kopieren(path+'\\'+i, ziel+'\\'+i)
  File "C:\Dokumente und Einstellungen\Py-Prog\Desktop\backup.auto.pyw", line 87, in Kopieren
    Kopieren(path+'\\'+i, ziel+'\\'+i)
  File "C:\Dokumente und Einstellungen\Py-Prog\Desktop\backup.auto.pyw", line 89, in Kopieren
    filesave(ziel+'\\'+i, fileopen(path+'\\'+i))
  File "C:\Dokumente und Einstellungen\Py-Prog\Desktop\backup.auto.pyw", line 68, in fileopen
    dtt=f.read()
  File "C:\Python31\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 320: character maps to <undefined>
(kommt nur wein ich bei fileopen() die try: anweisung weglasse.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
BlackJack

@Py-Prog: Am Traceback sieht man ziemlich deutlich, dass Du nicht `os.path.join()` verwendest sondern jetzt ``pfad + '\\' + i`` -- sag mal warum sollte man Dir noch helfen wollen, wenn Du entgegen der Ratschläge doch alles ganz furchtbar anders machst!?
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

@BlackJack ich hab's jetzt mit join gemacht und jetzt kommt aber wieder das gleiche, nur mit den kleinen änderungen.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Py-Prog hat geschrieben:

Code: Alles auswählen

  File "C:\Dokumente und Einstellungen\Py-Prog\Desktop\backup.auto.pyw", line 68, in fileopen
    dtt=f.read()
  File "C:\Python31\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 320: character maps to <undefined>
Kann es sein, dass du aus irgendeinem kuriosen Grund versuchst, den Dateiinhalt selber auszulesen und zu schreiben, statt die passenden Funktionen aus der Python-Library zu verwenden?
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Wenn du meinst das ich für das öffnen und speichern eine eingene funktion definiert hab dan ja.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Und warum oeffnest du die Dateien, wenn du sie eigtl kopieren willst? Es gibt schliesslich `shutil`, `os`, ... _darauf_ wollte /me raus

Warum du das benutzen willst ist folgendes: Wenn du die Dateien als Textdateien öffnest, wird der Inhalt zu Unicode-Objekten dekodiert, da du die Dateien nicht explizit mit einem Encoding oeffnest (zb mit `codecs.open`) wird mit dem System-Encoding gearbeitet: `cp1252`. Deine Dateien scheinen inkompatible Encodings (z.b. UTF-8 oder UTF-16) zu nutzen und dann ergibt sich dein Fehler.
Wenn du die Schrotflinte nicht von deinen Beinen wegbewegen willst und das lieber weiterhin zu Fuss erledigst, solltest du die Dateien wenigstens als Binaerdatei oeffnen um nicht alles kaputt zu machen.
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

@cofi Danke es geht jetzt.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Py-Prog hat geschrieben:@cofi Danke es geht jetzt.
Wie hast Du es denn jetzt gelöst? Ich hoffe mal mit den dafür gedachten Funktionen :-D
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Nein ich hab's doch nicht (ganz) gelöst, einmal hat's geklapt alle bilder sind am ziel angekommen aber beim zweiten mal kommt das:

Code: Alles auswählen

IOError: [Errno 13] Permission denied:
(Ich hab's nicht mit shutil gemacht sondern einfach in meinen funktionen das

Code: Alles auswählen

f=open(path, 'r')
mit

Code: Alles auswählen

f=open(path, 'rb')
ausgetauscht und das bein speichern natülich auch. (shutil nim ja das gleiche her also ist's doch egal)
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Oh mann, dir ist schon klar, dass du alle Metadaten verlierst? <ironie>Und warum, gibt es in der std. nur das Modul shutil, es ist doch völlig wertlos?</ironie>

Btw. es wurden dir schon gute Wege gennant um das Problem zu lösen, z.b. Post #2 von lunar: shutil.copytree
the more they change the more they stay the same
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Py-Prog hat geschrieben:

Code: Alles auswählen

f=open(path, 'rb')
ausgetauscht und das bein speichern natülich auch. (shutil nim ja das gleiche her also ist's doch egal)
Woher weißt Du das? Quelle?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Code: Alles auswählen

def copyfile(src, dst):
    """Copy data from src to dst"""
    if _samefile(src, dst):
        raise Error("`%s` and `%s` are the same file" % (src, dst))

    with open(src, 'rb') as fsrc:
        with open(dst, 'wb') as fdst:
            copyfileobj(fsrc, fdst)

def copyfileobj(fsrc, fdst, length=16*1024):
    """copy data from file-like object fsrc to file-like object fdst"""
    while 1:
        buf = fsrc.read(length)
        if not buf:
            break
        fdst.write(buf)
Weil es (oberflaechlich) so ist (Python 2.6 Code). Allerdings nur bei `shutil.copyfile` _UND_ die Doku erwaehnt das da auch ausdruecklich, alle anderen `copy` Funktionen kuemmern sich um mehr.
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Hyperion hat geschrieben:
Py-Prog hat geschrieben:

Code: Alles auswählen

f=open(path, 'rb')
ausgetauscht und das bein speichern natülich auch. (shutil nim ja das gleiche her also ist's doch egal)
Woher weißt Du das? Quelle?
Na ja, ich schau mir gern mal die Dateien der Module an und da hab ich bei shutil das gefunden. Was wundert dich das so? (vieleicht weil ich sonst dumme frage stelle wie man wirgendwas macht?)
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Py-Prog hat geschrieben: Na ja, ich schau mir gern mal die Dateien der Module an und da hab ich bei shutil das gefunden. Was wundert dich das so? (vieleicht weil ich sonst dumme frage stelle wie man wirgendwas macht?)
Ist bei Anfängern eher selten der Fall - zumal das ganze Prozedere sonderbar ist, da Du ja das Modul offensichtlich evaluiert hast, es aber dennoch nicht nutzt! :twisted:
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Hyperion hat geschrieben:
Py-Prog hat geschrieben: Na ja, ich schau mir gern mal die Dateien der Module an und da hab ich bei shutil das gefunden. Was wundert dich das so? (vieleicht weil ich sonst dumme frage stelle wie man wirgendwas macht?)
Ist bei Anfängern eher selten der Fall - zumal das ganze Prozedere sonderbar ist, da Du ja das Modul offensichtlich evaluiert hast, es aber dennoch nicht nutzt! :twisted:
Ab wann zählt man den zu den "Normalen" oder "Profis"?
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Py-Prog hat geschrieben:
Hyperion hat geschrieben:
Py-Prog hat geschrieben: Na ja, ich schau mir gern mal die Dateien der Module an und da hab ich bei shutil das gefunden. Was wundert dich das so? (vieleicht weil ich sonst dumme frage stelle wie man wirgendwas macht?)
Ist bei Anfängern eher selten der Fall - zumal das ganze Prozedere sonderbar ist, da Du ja das Modul offensichtlich evaluiert hast, es aber dennoch nicht nutzt! :twisted:
Ab wann zählt man den zu den "Normalen" oder "Profis"?
k.A. Ich hatte irgend wie den Eindruck (iirc auch in nem anderen Thread), Du wärst Anfänger. Mag mich auch irren und ist im Grunde genommen auch irrelevant ;-) Ich bin zwar kein Neuling, mache aber immer noch einen haufen Fehler :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

Py-Prog hat geschrieben:
Hyperion hat geschrieben:
Py-Prog hat geschrieben: Na ja, ich schau mir gern mal die Dateien der Module an und da hab ich bei shutil das gefunden. Was wundert dich das so? (vieleicht weil ich sonst dumme frage stelle wie man wirgendwas macht?)
Ist bei Anfängern eher selten der Fall - zumal das ganze Prozedere sonderbar ist, da Du ja das Modul offensichtlich evaluiert hast, es aber dennoch nicht nutzt! :twisted:
Ab wann zählt man den zu den "Normalen" oder "Profis"?
Wenn du mehr Fragen beantwortest als stellst bist du "Normal" ;-)

mir ist immernoch ein Rätsel warum man nicht generell Dateien mit "with" öffnet, wenn man sie denn überhaupt öffnen muss.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Py-Prog hat geschrieben:Ab wann zählt man den zu den "Normalen" oder "Profis"?
Wenn deine Fragen sich nur noch auf Algorithmen beschränken und du zusammen mit den anderen den IRC Channel mit Offtopic füllst.
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Ich will dich nur mal drauf hinweisen das durch fragen stellen das wissen auch wächst. Und man lernt nicht nur aus Büchern.(da steht nicht alles drinnen, sondern zu großem teil das gleiche wie in andern auch)
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Antworten