Seite 1 von 1

Problem mit os.rename

Verfasst: Dienstag 8. Oktober 2002, 19:50
von lobo
Ich hab so wie es scheint ein Problem mit os.rename. Mein OS ist Linux.

src = './sample.mp3'
dst = '/samplepath/'

Code: Alles auswählen

def cleanup(src, dst):
        #Dateiname aus Pfad extrahieren
        filename = os.path.basename(src)
        #Zielpfad
        dst = dst + filename
        
        print src + " wird nach " + dst + " verschoben!"

        os.rename(src,dst)
Das Problem ist nur, dass die Print ausgabe src und dst korrekt angibt, nur heisst ./sample.mp3 nach os.rename dann /samplepath/?sample.mp3 . Woher kommt das Fragezeichen vor sample.mp3 nach dem Umbenennen, oder besser gesagt, wie bekomme ich es weg ??

Gruss

Jochen

Verfasst: Dienstag 8. Oktober 2002, 20:20
von hans
rename(src, dst)
Rename the file or directory src to dst. If dst is a directory, OSError will be raised. On Unix, if dst exists and is a file, it will be removed silently if the user has permission. The operation may fail on some Unix flavors if src and dst are on different filesystems. If successful, the renaming will be an atomic operation (this is a POSIX requirement). On Windows, if dst already exists, OSError will be raised even if it is a file; there may be no way to implement an atomic rename when dst names an existing file. Availability: Macintosh, Unix, Windows.
Ich gehe mal davon aus, daß du Linux benutzt, oder? Ist die Ausgabe von Print wirklich "sauber"? Leite die doch mal in eine Datei um und schau sie mit vi an. Sind da nicht vielleicht noch nicht sichtbare Sonderzeichen?

Versuch es mal so

Code: Alles auswählen

def cleanup(src, dst):
        #Dateiname aus Pfad extrahieren
        # filename = os.path.basename(src)
        #Zielpfad
        dstFile = "%s/%s" % (dst, os.path.basename(src))
       
        print "%s wird nach %s verschoben!" % (src, dstFile)
        print len(src)
        print len(dstFile)

        os.rename(src,dstFile) 
Hans

Re: Problem mit os.rename

Verfasst: Dienstag 8. Oktober 2002, 21:07
von Voges
Hallo Jochen!
lobo hat geschrieben:Ich hab so wie es scheint ein Problem mit os.rename. Mein OS ist Linux.
Ergänzend zu Hans' Vermutung mit dem Sonderzeichen:
Liest Du dst aus einer Datei oder z.B. via popen() von der stdout ein? Dann nehme ich mal an, dass dahinter noch ein '\n' hängt. os.rename('./bla','/foo/bar/\n') erzeugt nämlich so eine ?-Datei.

Jan

Verfasst: Dienstag 8. Oktober 2002, 21:19
von lobo
Voges du hattest recht, ein

dst = dst.strip()
dst = dst + filename

funktioniert dann.

Ich hatte vorher schon mit strip getestet, hatte es aber an die falsche Stelle gesetzt :oops:


Vielen Danke für eure Bemühung.

Gruss

Jochen

p.s. Der Code ist Teil einer Mp3 und Ogg Dateien Putze, die diese Dateien anhand des ID3-Tag Genres und einer Config-Datei in Verzeichnisse einsortiert. Wenn ich mit dem Code zufrieden bin und alle Funktionen drinn sind, werd ich es hier bekannt geben ;-)