我有一个名为“ 12”的文件夹,该文件夹包含以下文件:
import os
for root, dirs, files in os.walk('./12', topdown=True):
dirs.clear() #with topdown true, this will prevent walk from going into subs
for file in files:
print(file)
输出:
ab 1.jpg
ab 0.jpg
现在我想用下划线替换上面文件中的空格,以完成我已经完成的操作:
import os
for root, dirs, files in os.walk('./12', topdown=True):
dirs.clear() #with topdown true, this will prevent walk from going into subs
for file in files:
r=file.replace(" ", "_")
os.rename(r, file)
在上面的代码中,当我print(r)
时,它为我提供了下划线代替的空间值
ab__1.jpg
ab_0.jpg
但是os.rename函数不起作用,并且文件夹内的实际文件名没有更改。 os.rename(r,file)出现以下错误:
回溯(最近一次通话最后一次):文件“ demo.py”,第7行,在 os.rename(r,file)FileNotFoundError:[错误2]没有这样的文件或目录:'ab__1.jpg'->'ab 1.jpg'
如何解决此错误?
修改: 我的问题不是Rename multiple files in a directory in Python的重复,因为在提到的链接上,它们使用一个for循环递归重命名当前工作目录中的所有文件。在我的问题中,我使用2个for循环,因为重命名文件是整个过程的一部分,当我使用2个for循环时,遇到了错误。
答案 0 :(得分:2)
也许您打算做os.rename("./12/" + file, ./12/" + r)
?在修改名为12
的目录中的文件时,而不是在其中执行Python脚本的目录中进行修改。
答案 1 :(得分:0)
使用os.rename(file, r)
代替os.rename(r, file)
。
答案 2 :(得分:0)
糟糕,我必须提供重命名这些文件的绝对路径:
import os
cwd=os.getcwd()+'/12'
print(cwd)
for root, dirs, files in os.walk('./12', topdown=True):
dirs.clear() #with topdown true, this will prevent walk from going into subs
for file in files:
r=file.replace(" ", "_")
os.rename(os.path.join(cwd,file), os.path.join(cwd,r))