Problem mit shutil.copy()

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
Benutzeravatar
newone_XXV.
User
Beiträge: 50
Registriert: Dienstag 20. Juni 2006, 15:03
Wohnort: Direkt vor meinem PC
Kontaktdaten:

So wie die Überschrift schon sagt habe ich ein Problem mit der Copy-Methode im Modul shutil... Mein Code für ein kleines Programm das den Inhalt eines Ordners sichern soll und anschließend eine .exe starten soll, sieht wie folgt aus:

Code: Alles auswählen

import time
import os
import shutil
import cPickle as p
import subprocess
import sys

def text_menue():
    print """
Wilkommen!
Druecken Sie die...
1 um zu starten,
2 um die Optionen zu aendern,
3 um zu beenden"""

def programm_start(exe_pfad):
    subprocess.Popen(exe_pfad)
    sys.exit()

def saver(zeit_str, saver_pfad):
    ordner = os.mkdir(zeit_str)
    objekte = os.listdir(saver_pfad)
    for i in objekte:
        shutil.copy2(i, ordner)

while True:

    text_menue()
    eingabe = input('Eingabe: ')

    if eingabe == 1:
        pfad1 = raw_input('save_pfad angeben: ')
        pfad2 = raw_input('exe_pfad angeben: ')
        uhrzeit = time.strftime('%a_%d_%b_%Y_%H_%M_%S')
        saver(uhrzeit, pfad1)
        programm_start(pfad2)
        sys.exit()

    elif eingabe == 2:
        print 'kommt noch'

    elif eingabe == 3:
        sys.exit()

    else:
        print 'Nicht verfuegbar'
So nun bekomme ich folgenden Fehler:
  • Traceback (most recent call last):
    File "C:\Python25\Quelldateien\saver\2.py", line 35, in <module>
    saver(uhrzeit, pfad1)
    File "C:\Python25\Quelldateien\saver\2.py", line 24, in saver
    shutil.copy2(i, ordner)
    File "C:\Python25\lib\shutil.py", line 89, in copy2
    if os.path.isdir(dst):
    File "C:\Python25\lib\ntpath.py", line 270, in isdir
    st = os.stat(path)
    TypeError: coercing to Unicode: need string or buffer, NoneType found
Ich hab echt keine Ahnung, was ich falsch mache... Wäre nett, wenn mir jemand das erklären könnte....
Benutzeravatar
mq
User
Beiträge: 124
Registriert: Samstag 1. Januar 2005, 19:14

os.mkdir() erstellt ein Directory, aber es gibt keinen Wert zurueck. Daher wird der Variable ordner der Wert None zugewiesen. Ersetze ordner im copy2-Aufruf durch den Namen des Ordners und es sollte funktionieren.
Antworten