Python在一个折叠中更改多个文件的文件名

2024-10-02 20:34:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个脚本来重命名文件夹中的所有文件,这是我的代码,但它不起作用。我在那个文件夹里有200张图片,我想把文件名1改成文件名1等等。转换是dog_1到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))

Tags: 文件代码脚本文件夹名称内容os文件名
2条回答

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

第一种情况是,您没有在os.rename行上关闭括号。在

你有这个:

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

您缺少一个括号,因此应该是:

^{2}$

但是,这可能是由于将代码复制到文章中而导致的编辑问题。在

其次,也是最重要的一点,您没有指定要对其进行重命名的路径,而只是给出了两个文件名,因此很可能会出现“找不到文件”错误。在

您需要使用目录和文件名使用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))
        )

我已经测试过了,应该可以用了。在

下面是关于操作系统模块的文档。请看一看,以进一步了解在使用文件系统时可以使用的功能:

Python{a1}

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

下面的代码将用相似的名称重命名该目录中的所有文件,但不包括_。在

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

相关问题 更多 >