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

标签 python input rename

我正在尝试制作一个脚本来重命名文件夹中的所有文件,这是我的代码,但它不起作用。我在该文件夹中有大约 200 个图像,我想将所有文件的 filename1_ 更改为 filename1 等等。变换是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))

最佳答案

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

首先,您没有关闭 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

关于Python更改文件夹中多个文件的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33284406/

相关文章:

java - 在文本文件中查找一行并编辑它

linux - 从 linux 中的多个文件名中删除 "-template"部分

python - 删除列标题中 : 之前的所有字符

Javascript 更改输入值而不覆盖值

c++ - libc++abi.dylib : terminate called throwing an exception

ruby - 无法将控制台输出保存为 Ruby 变量

c++ - C++中通过继承类重命名类成员

python - 如何在另一个笔记本的相对路径中运行带有空格的 Jupyter 笔记本?

python - 一次安装三个软件包失败 : "pip install numpy pil aptus" but individually they work, 为什么?

python - 使用 python 或其他自动化 Arduino Yun WiFi 登录到 Captive Portal 的方法?