如何按数字顺序重命名文件夹中的所有文件?

时间:2017-05-19 17:45:25

标签: python python-3.x scripting

“照片”文件夹中包含800多张图片。我想以数字顺序重命名所有这些,从1开始。

我能得到的是以下代码。它看起来对我来说,但它不起作用。我在rename

上收到错误消息
TypeError: coercing to Unicode: need string or buffer, int found

代码:

import os

x = 0

for i in os.listdir("E:\\Photos"): 
    if  i.endswith(".jpg"):
        os.rename(i, x)
        x+=1

3 个答案:

答案 0 :(得分:2)

rename需要两个字符串;你给它一个整数。尝试这样的事情:

os.rename(i, str(x))

甚至是这种形式的描述性名称:

os.rename(i, "photo" + str(x) + ".jpg")

如果你想要三位数的编号(即&#34; photo001.jpg&#34;而不是&#34; photo1.jpg&#34;),请查看<string>.format方法。

答案 1 :(得分:1)

正如在另一个答案中所提到的,os.rename函数不会接受整数。

我确定有更多的pythonic方式来写这个,但这里的答案完全基于你的代码:

#! /usr/bin/python3.4
    import os

    x = 0
    photo_dir=os.path.dirname(__file__)+"\\photos\\"
    extension = ".jpg"
    for i in os.listdir(photo_dir): 
        if  i.endswith(extension):
            os.rename(photo_dir+i, photo_dir+str(x)+extension)
            x+=1

答案 2 :(得分:0)

在 PowerShell 中有一种方法可以做到这一点,已回答 here

快速说明:

$count = 1
Get-ChildItem -Path '.' -File | Rename-Item -NewName { '{0:D4}.png' -f $script:count++ }