繁体   English   中英

python中的os.rename返回errno 20

[英]os.rename in python return errno 20

我正在python 3中编写一个小程序来自动整理我的downloads文件夹。

当我运行它时,获取: NotADirectoryError: [Errno 20] Not a directory: '/home/rafa/Descargas/guiaDocente_IA.pdf' -> '/home/rafa/UGR/IA/'

我的程序中有两个功能,第一个功能是查找文件名是否包含子字符串“ cadena”,然后为新文件夹重命名为新名称。 代码是:

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/'

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

您无法将文件( guiaDocente_IA.pdf )重命名为目录( 'IA/' )。

错误的原因是,如果"cadena"不在archivo ,则compruebaArchivo(cadena, archivo)返回一个空字符串。 要解决该错误,当arch_nuevo为空时,您的代码应处理这种情况。

顺便说一句,在代码中使用英文作为名称,否则将很难为您提供帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM