首页 > 解决方案 > 使用特定格式的python重命名文件

问题描述

我正在尝试重命名一个文件夹中的文件,模式为 0001、0002、0010、0100 等。我对 python 非常陌生,很抱歉问了这么基本的问题。

我四处搜索,我遇到的大多数代码都会重命名文件(不是我想要的)或删除某些字符。我还遇到过使用额外模块(glob)的代码,这只会让我更深入兔子洞。我看到的大部分内容都让我头晕目眩;目前我的技能并没有超越简单的函数,if、when、for、while 语句等。

我拼凑了一些我(有点)理解的代码,但它不起作用。

import os

dir = os.listdir("D:\\temp\\Wallpapers")

i = 0

for item in dir:
    dst ="000" + str(i) + ".jpg"
    src = item
    dst = item + dst 

    # rename() function will 
    # rename all the files 
    os.rename(src, dst) 
    i += 1

这是我得到的错误:

Traceback (most recent call last):
  File "rename.py", line 14, in <module>
    os.rename(src, dst)
FileNotFoundError: [WinError 2] The system cannot find the file specified: '00-Pyatna.jpg' -> '0000.jpg'

标签: pythonfilesystems

解决方案


它不起作用,因为您可能不在正确的目录中,并且您正试图在您现在所在的目录中找到这些文件。您应该使用绝对路径来执行此操作。见以下代码

import os

base_path = "D:/temp/Wallpapers"
files = os.listdir(base_path)


for i, fp in enumerate(files):
    dst = os.path.join(base_path, "{0:04d}.jpg".format(i))
    src = os.path.join(base_path, fp) 
    os.rename(src, dst) 

推荐阅读