Python更改文件夹中多个文件的文件名

时间:2015-10-22 15:09:34

标签: python input rename

我试图制作一个脚本来重命名文件夹中的所有文件,这是我的代码,但它不起作用。我在该文件夹中有200个图像,我想将filename1_更改为filename1,依此类推所有文件。转变是dog_1到doggy1;或者其他什么,文件的新名称可以是任何东西。有人可以帮帮我吗? 我还是python的新手,所以我现在的代码可能看起来没什么。

widgets

2 个答案:

答案 0 :(得分:2)

我运行了你的代码,这是你的两个主要问题:

首先,您没有关闭os.rename行的括号。

你有这个:

os.rename(str(lijstmetfiles[i]), str("doggy"+str(i))

你错过了一个括号,所以应该是:

os.rename(str(lijstmetfiles[i]), str("doggy"+str(i)))

但是,这可能是将代码复制到帖子中的编辑问题。

其次,最重要的是,您没有指定要重命名的路径,您只是提供了两个文件名,因此您很可能会收到文件未找到错误。

您需要使用您的目录和文件名来使用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模块的文档。看一下它,以便进一步了解在使用文件系统时可以使用的内容:

Python 2:https://docs.python.org/2/library/os.html

Python 3:https://docs.python.org/3/library/os.html

答案 1 :(得分:1)

以下代码将重命名该目录中具有相似名称但排除_的所有文件。

#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('_','')))