2016-03-05 24 views
0

我在python 3中編寫了一個小程序來自動化我的下載文件夾的命名。在python中的os.rename返回errno 20

當我運行它獲得: NotADirectoryError: [Errno 20] Not a directory: '/home/rafa/Descargas/guiaDocente_IA.pdf' -> '/home/rafa/UGR/IA/'

我在我的節目兩個功能,第一個找到,如果文件名中有一個子「卡德納」,並重新命名爲他的新文件夾的新名稱。該代碼是:

def compruebaArchivo(cadena, archivo): 
    archivo_nuevo="" 
    if "cadena" in archivo: 
     if "_"+cadena in arch: 
      archivo_nuevo = archivo.replace("_"+cadena, '') 
     elif "-"+cadena in arch: 
      archivo_nuevo = archivo.replace("-"+cadena, '') 

    print(archivo_nuevo) 
    return archivo_nuevo 

我也有走在下載文件夾中的功能和一些文件移動到一個新的文件夾:

def mueveArchivos(): 
for path, dirs, files in os.walk(Descargas): 
    for arch in files: 
     #Asignatura TSI 
     if "TSI" in arch: 
      arch_nuevo=compruebaArchivo("TSI", arch) 
      os.rename(Descargas + arch, UGR + "TSI/" + arch_nuevo) 
     #Asignatura FBD 
     elif "FBD" in arch: 
      arch_nuevo=compruebaArchivo("FBD", arch) 
      os.rename(Descargas + arch, UGR + "FBD/" + arch_nuevo) 
     #Asignatura IC 
     elif "IC" in arch: 
      arch_nuevo=compruebaArchivo("IC", arch) 
      os.rename(Descargas + arch, UGR + "IC/" + arch_nuevo) 
     #Asignatura IA 
     elif "IA" in arch: 
      arch_nuevo=compruebaArchivo("IA", arch) 
      os.rename(Descargas + arch, UGR + "IA/" + arch_nuevo) 
     #Asignatura AC 
     elif "AC" in arch: 
      arch_nuevo=compruebaArchivo("AC", arch) 
      os.rename(Descargas + arch, UGR + "AC/" + arch_nuevo) 
     #Asignatura ALG 
     elif "ALG" in arch: 
      arch_nuevo=compruebaArchivo("ALG", arch) 
      os.rename(Descargas + arch, UGR + "ALG/" + arch_nuevo) 

的UGR和Descargas我有全路徑名請按照:

home = os.path.expanduser("~") 
Descargas = home + "/Descargas/" 
UGR = home + "/UGR/" 

所有的進口是正確的,但我不能解決這個錯誤,我需要一些幫助。

編輯。 回溯是:

Traceback (most recent call last): 
    File "scripts/orderUGR.py", line 47, in <module> 
    mueveArchivos() 
    File "scripts/orderUGR.py", line 37, in mueveArchivos 
    os.rename(Descargas + arch, UGR + "IA/" + arch_nuevo) 
NotADirectoryError: [Errno 20] Not a directory: '/home/rafa/Descargas/guiaDocente_IA.pdf' -> '/home/rafa/UGR/IA/' 
+0

什麼是追溯? – zondo

+0

'回溯(最近通話最後一個): 文件 「腳本/ orderUGR.py」,第47行,在 mueveArchivos() 文件 「腳本/ orderUGR.py」 37行,在mueveArchivos os.rename(Descargas + arch,UGR +「IA /」+ arch_nuevo) NotADirectoryError:[Errno 20]不是目錄:'/home/rafa/Descargas/guiaDocente_IA.pdf' - >'/ home/rafa/UGR/IA /' ' @zondo – rafaelleru

+0

請把它粘貼,格式正確,在你的問題中。 – zondo

回答

1

的錯誤是不言自明:NotADirectoryError: [Errno 20] Not a directory: '/home/*/guiaDocente_IA.pdf' -> '/home/*/IA/'

您不能重命名文件(guiaDocente_IA.pdf)到某個目錄('IA/')。

錯誤的原因是compruebaArchivo(cadena, archivo)返回一個空字符串,如果"cadena"不在archivo。爲了解決這個錯誤,你的代碼應該處理arch_nuevo爲空的情況。

順便說一句,在你的代碼中使用英文名稱,否則它很難幫助你。

相關問題