“照片”文件夹中包含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
答案 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++ }