os.rename 在 python return 错误号 20
os.rename in python return errno 20
我正在 python 3 中编写一个小程序来自动化我的下载文件夹的排序。
当我 运行 它获得:
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/"
所有导入都是正确的,但我无法解决这个问题error.I需要一些帮助。
编辑。
追溯是:
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/'
)。
错误的原因是 compruebaArchivo(cadena, archivo)
returns 一个空字符串 if "cadena"
not in archivo
。要修复此错误,您的代码应处理 arch_nuevo
为空的情况。
顺便说一句,在你的代码中使用英文名称,否则很难帮助你。
我正在 python 3 中编写一个小程序来自动化我的下载文件夹的排序。
当我 运行 它获得:
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/"
所有导入都是正确的,但我无法解决这个问题error.I需要一些帮助。
编辑。 追溯是:
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/'
)。
错误的原因是 compruebaArchivo(cadena, archivo)
returns 一个空字符串 if "cadena"
not in archivo
。要修复此错误,您的代码应处理 arch_nuevo
为空的情况。
顺便说一句,在你的代码中使用英文名称,否则很难帮助你。