Python 更改文件夹中多个文件的文件名
Python changing filenames of multiple files in a folder
我正在尝试制作一个脚本来重命名文件夹中的所有文件,这是我拥有的代码,但它不起作用。我在该文件夹中有 200 张图像,我想将 filename1_ 更改为 filename1 等等所有文件。改造为dog_1 to doggy1;或其他,文件的新名称可以是任何名称。有人可以帮帮我吗?
我对 python 还是个新手,所以我现在拥有的代码可能看起来没什么。
import os
directoryname="C:\Users\Ineke\Documents\Python Scripts\images"
lijstmetfiles = os.listdir(directoryname)
for i in range(len(lijstmetfiles)):
os.rename(str(lijstmetfiles[i]), str("doggy"+str(i))
以下代码将重命名该目录中具有相似名称但排除 _
的所有文件。
#UNTESTED
import os
directoryname="C:\Users\Ineke\Documents\Python Scripts\images"
lijstmetfiles = os.listdir(directoryname)
for i in lijstmetfiles:
os.rename(os.path.join(directoryname, i),
os.path.join(directoryname,
i.replace('_','')))
我 运行 你的代码,这是你的两个主要问题:
首先,您没有在 os.rename
行上放置括号os。
你有这个:
os.rename(str(lijstmetfiles[i]), str("doggy"+str(i))
您缺少括号,所以应该是:
os.rename(str(lijstmetfiles[i]), str("doggy"+str(i)))
但是,这可能是将您的代码复制到您的 post 中的编辑问题。
其次,most 重要的是,您没有指定要重命名的路径,您只是提供了两个文件名,所以 most 可能会得到找不到文件错误。
您需要使用 Python 的 os.path.join
方法,使用您的目录和文件名,如以下代码示例所示:
os.rename(
os.path.join(directoryname, str(lijstmetfiles[i])),
os.path.join(directoryname, str("doggy"+str(i)))
)
现在您明确指定了重命名的完整路径。
还有一点需要说明,您不需要将文件名强制转换为 "str"。例如,即使您的文件名是 5
,从 listdir
获取文件列表仍将作为字符串返回。
最后,将所有内容放在一起,您的代码应如下所示:
import os
directoryname="C:\Users\Ineke\Documents\Python Scripts\images"
lijstmetfiles = os.listdir(directoryname)
print(lijstmetfiles)
for i in range(len(lijstmetfiles)):
os.rename(
os.path.join(directoryname, lijstmetfiles[i]),
os.path.join(directoryname, "doggy"+str(i))
)
我自己测试了这个,它应该可以工作。
这里是 os 模块的文档。查看它以进一步了解您在使用文件系统时可用的内容:
我正在尝试制作一个脚本来重命名文件夹中的所有文件,这是我拥有的代码,但它不起作用。我在该文件夹中有 200 张图像,我想将 filename1_ 更改为 filename1 等等所有文件。改造为dog_1 to doggy1;或其他,文件的新名称可以是任何名称。有人可以帮帮我吗? 我对 python 还是个新手,所以我现在拥有的代码可能看起来没什么。
import os
directoryname="C:\Users\Ineke\Documents\Python Scripts\images"
lijstmetfiles = os.listdir(directoryname)
for i in range(len(lijstmetfiles)):
os.rename(str(lijstmetfiles[i]), str("doggy"+str(i))
以下代码将重命名该目录中具有相似名称但排除 _
的所有文件。
#UNTESTED
import os
directoryname="C:\Users\Ineke\Documents\Python Scripts\images"
lijstmetfiles = os.listdir(directoryname)
for i in lijstmetfiles:
os.rename(os.path.join(directoryname, i),
os.path.join(directoryname,
i.replace('_','')))
我 运行 你的代码,这是你的两个主要问题:
首先,您没有在 os.rename
行上放置括号os。
你有这个:
os.rename(str(lijstmetfiles[i]), str("doggy"+str(i))
您缺少括号,所以应该是:
os.rename(str(lijstmetfiles[i]), str("doggy"+str(i)))
但是,这可能是将您的代码复制到您的 post 中的编辑问题。
其次,most 重要的是,您没有指定要重命名的路径,您只是提供了两个文件名,所以 most 可能会得到找不到文件错误。
您需要使用 Python 的 os.path.join
方法,使用您的目录和文件名,如以下代码示例所示:
os.rename(
os.path.join(directoryname, str(lijstmetfiles[i])),
os.path.join(directoryname, str("doggy"+str(i)))
)
现在您明确指定了重命名的完整路径。
还有一点需要说明,您不需要将文件名强制转换为 "str"。例如,即使您的文件名是 5
,从 listdir
获取文件列表仍将作为字符串返回。
最后,将所有内容放在一起,您的代码应如下所示:
import os
directoryname="C:\Users\Ineke\Documents\Python Scripts\images"
lijstmetfiles = os.listdir(directoryname)
print(lijstmetfiles)
for i in range(len(lijstmetfiles)):
os.rename(
os.path.join(directoryname, lijstmetfiles[i]),
os.path.join(directoryname, "doggy"+str(i))
)
我自己测试了这个,它应该可以工作。
这里是 os 模块的文档。查看它以进一步了解您在使用文件系统时可用的内容: