2017-12-13 4 views
-1

Ich versuche, einige Dateien umbenennen, aber es gibt mir diese Fehlermeldung:Kann mir jemand sagen, was in diesem Code falsch ist?

File "C:/Users/XhesiLocal/PycharmProjects/Prova/provaprova", line 19, in <module> os.rename(f, new_name) 
FileNotFoundError: [WinError 3] 

Code:

import os 

os.chdir('C:\\Users\XhesiLocal\Desktop\Analisi 2018') 
print(os.getcwd()) 

for f in os.listdir(): 
    f_name, f_ext = os.path.splitext(f) 

    f_nota, f_data = f_name.split('Lez') 
    f_nota = f_nota.strip()[4:] 
    f_data = f_name.split('_') 

    f_inutile, f_giorno, f_mese = f_data 
    f_giorno = f_giorno.strip() 

    new_name = '{} - {}/{}{}'.format(f_nota, f_giorno, f_mese, f_ext) 

    print(new_name) 
    os.rename(f, new_name) 
+3

Scheint ziemlich selbsterklärend. Eine Datei, die versucht wurde umzubenennen, wurde nicht gefunden. –

+3

überprüfen Sie Ihre Chdir. Wenn Sie einen umgekehrten Schrägstrich verwenden, sollte es entweder ein doppelter umgekehrter Schrägstrich oder ein einzelner Schrägstrich sein. https://stackoverflow.com/questions/17326337/python-os-chdir--modifying-the-passed-directory-name – locus2k

+1

Sie könnten versuchen, "f" kurz vor dem Umbenennen zu drucken und sehen, wie das im Vergleich aussieht zu den tatsächlichen Dateinamen. –

Antwort

3

Der Fehler ist offensichtlich, dass die Datei nicht gefunden werden konnte. Da aber der Quelldateiname f aus os.listdir() stammt, kann es nicht sein: Die Datei hat, um da zu sein.

Das Problem ist hier:

new_name = '{} - {}/{}{}'.format(f_nota, f_giorno, f_mese, f_ext) 

Der neue Name ein Name sein, der einen Schrägstrich enthält. Daher ist der Teil vor dem Schrägstrich ein Verzeichnis, in das die Datei verschoben wird. Wenn dieses Verzeichnis nicht existiert, schlägt os.rename mit dem obigen Fehler fehl.

Um eine Datei in ein anderes Verzeichnis zu verschieben, müssen Sie sicherstellen, dass das Verzeichnis zunächst zum Beispiel os.makedirs mit existiert:

os.makedirs(os.dirname(new_name)) 
os.rename(f, new_name) 
+0

@ErixhensMuka Du bist herzlich willkommen! :) Bitte denken Sie daran, [die Antwort zu akzeptieren] (https://meta.stackexchange.com/a/5235/141542), um Ihre Frage als gelöst zu markieren. – poke

+0

Entschuldigung, ich wusste das nicht! Ich habe es jetzt akzeptiert –

Verwandte Themen