我正在尝试在python 2.7中创建一个脚本,它将重命名目录中的所有文件。下面是我到目前为止的代码。第一个函数删除文件名中的任何数字。第二个函数应该重命名新文件名。第二个函数运行时出现以下错误:
[错误183]当该文件已存在时无法创建文件
我知道这是因为我没有遍历文件并在新文件名中添加递增编号,因此脚本更改了第一个文件的名称,然后尝试将第二个文件的名称更改为相同将name命名为第一个,产生错误。
有人可以帮我创建一个循环,为目录中的每个文件名添加一个递增的数字吗?
我尝试添加:
if file_name == filename:
file_name = file_name + 1
在while循环中,但这显然不起作用,因为我不能用字符串连接一个整数。
import os
def replace_num():
file_list = os.listdir(r"C:\Users\Admin\Desktop\Python Pics")
print(file_list)
saved_path = os.getcwd()
print("Current Working Directory is " + saved_path)
os.chdir(r"C:\Users\Admin\Desktop\Python Pics")
for file_name in file_list:
print("Old Name - " + file_name)
os.rename(file_name, file_name.translate(None, "0123456789"))
os.chdir(saved_path)
replace_num()
def rename_files():
file_list = os.listdir(r"C:\Users\Admin\Desktop\Python Pics")
print(file_list)
saved_path = os.getcwd()
print("Current Working Directory is " + saved_path)
os.chdir(r"C:\Users\Admin\Desktop\Python Pics")
for new_name in file_list:
print("New Name - " + new_name)
try:
os.rename(new_name, "iPhone")
except Exception, e:
print e
rename_files()
答案 0 :(得分:4)
而不是:
if file_name == filename:
file_name = file_name + 1
做这样的事情:
counter = 0
for file_name in file_container:
if file_name == file_name: # this will always be True - so it's unnecessary
file_name = "{0}_{1}".format(file_name, counter)
counter += 1